【问题标题】:Get total item count from firebase recycler adapter从 Firebase 回收器适配器获取总项目数
【发布时间】:2017-11-01 20:25:24
【问题描述】:

这是我的代码 sn-p- 我想在我的活动中获得总项目数。 (即 databaseReference 中的所有子项。而且我还要求子项总数动态变化,即添加或删除子项。

firebaseRecyclerOptions = new FirebaseRecyclerOptions.Builder<Chat>().setQuery(databaseReference,Chat.class).build();

    firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Chat, ChatHolder>(firebaseRecyclerOptions)
    {
        @Override
        protected void onBindViewHolder(ChatHolder holder, int position, Chat model)
        {

            holder.txtName.setText(model.getName());

        }

        @Override
        public ChatHolder onCreateViewHolder(ViewGroup parent, int viewType)
        {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.chats, parent, false);
            return new ChatHolder(view);
        }



        @Override
        public void onDataChanged() {
            super.onDataChanged();

            firebaseRecyclerAdapter.notifyDataSetChanged();
        }

【问题讨论】:

    标签: android firebase-realtime-database firebaseui


    【解决方案1】:

    要解决这个问题,您需要使用getItemCount() 方法来计算您的FirebaseRecyclerAdapter 中的所有项目。

    【讨论】:

    • firebaseRecyclerAdapter.getItemCount()。这将返回 0。
    • 你需要在populateViewHolder()方法中使用getItemCount()。有用吗?
    【解决方案2】:

    你可以试试这个:

     DatabaseReference database = FirebaseDatabase.getInstance().getReference().child("yourChild");
     int childCount = 0;
    
            database.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    for (DataSnapshot snap: dataSnapshot.getChildren()) {
                        childCount+=snap.getChildrenCount();
                    }
                }
    
                @Override
                public void onCancelled(DatabaseError databaseError) {
    
                }
    
        });
    

    【讨论】:

    • 我的 firebase 文档为 - Details Key Id Name _________ Key Id Name ................... ......... 使用上述方法返回我 4 即孩子里面的关键。但我需要值 2。(即我的 Detail 文档中的总键)。而且如果我只在 onDataChanged 中打印 childCount,那么它给出的值是 4,如果我在任何地方使用 childCount,它给出 0 ..
    • @Raj 感谢您的评论。事实上,你的评论拯救了我的一天。我在 onBindViewHolder 中使用 getItemCount,但是当我将它移动到 onDataChanged 时,它神奇地工作。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多