Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从firebase回收器适配器获取项目总数_Android_Firebase Realtime Database_Firebaseui - Fatal编程技术网

Android 从firebase回收器适配器获取项目总数

Android 从firebase回收器适配器获取项目总数,android,firebase-realtime-database,firebaseui,Android,Firebase Realtime Database,Firebaseui,这是我的代码片段- 我想获取活动中的项目总数。(即数据库引用中的所有子项。同时,我还要求动态更改总子项计数,即添加或删除子项 firebaseRecyclerOptions = new FirebaseRecyclerOptions.Builder<Chat>().setQuery(databaseReference,Chat.class).build(); firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<C

这是我的代码片段- 我想获取活动中的项目总数。(即数据库引用中的所有子项。同时,我还要求动态更改总子项计数,即添加或删除子项

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();
        }
firebaseRecyclerOptions=new firebaseRecyclerOptions.Builder().setQuery(databaseReference,Chat.class).build();
firebaseRecyclerAdapter=新的firebaseRecyclerAdapter(firebaseRecyclerOptions)
{
@凌驾
受保护的void onBindViewHolder(聊天室支架、int位置、聊天室型号)
{
holder.txtName.setText(model.getName());
}
@凌驾
public ChatHolder onCreateViewHolder(视图组父级,int-viewType)
{
View=LayoutInflater.from(parent.getContext()).flate(R.layout.chats,parent,false);
返回新的聊天室持有者(视图);
}
@凌驾
公共无效onDataChanged(){
super.onDataChanged();
firebaseRecyclerAdapter.notifyDataSetChanged();
}
您可以尝试以下方法:

 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) {

            }

    });

要解决此问题,您需要使用
getItemCount()
方法,该方法从
FirebaseRecyclerAdapter

FirebaseRecyclerAdapter.getItemCount()。返回0。您需要在
populateViewHolder()中使用
getItemCount()
方法
method.是否有效?我的firebase文档是as-Details Key Id Name\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。(即我的详细文档中的总键)…而且如果我在onDataChanged中打印childCount,那么它将给出值4,如果我在任何地方使用childCount,它将给出0..@Raj感谢您的评论。事实上,您的评论挽救了我的一天。我在onBindViewHolder中使用getItemCount,但当我将其移动到onDataChanged时,它神奇地工作了。谢谢。