适配器上的getItemCount()返回0

Tee*_*Kay 3 android android-adapter firebase firebase-realtime-database firebaseui

我创建了一个工作正常的适配器。现在,我需要计算适配器中数据项的数量。我正在使用函数getItemcount(),但每次都得到0。另外,我正在使用Firebase处理我的数据库。

  final Firebase mRoot = new Firebase(FIREBASE_URL);
  mPosts= mRoot.child("posts");
  rvPosts.setHasFixedSize(true); //for performance improvement
    rvPosts.setLayoutManager(new LinearLayoutManager(this));    //for vertical list

   postAdapter = new FirebaseRecyclerAdapter<Hello, PostViewHolder>(Hello.class, R.layout.view_hello, PostViewHolder.class, mPosts.orderByChild("postedBy")) {

            @Override
            protected void populateViewHolder(final PostViewHolder postViewHolder, final Hello hello, int i) {
              //do something
         }
        };
        rvPosts.setAdapter(postAdapter);
        int postForSelect = postAdapter.getItemCount();
Run Code Online (Sandbox Code Playgroud)

可能是什么问题?

Fra*_*len 6

FirebaseRecyclerAdapter异步从数据库到您的应用程序的数据同步。当您打印项目数时,尚未同步任何数据。

要知道适配器中的数据何时更改,可以注册一个AdapterDataObserver。例如,在I / O的“零到应用”对话中,我们使用此代码段来确保最新的聊天消息始终可见:

    adapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
        public void onItemRangeInserted(int positionStart, int itemCount) {
            messagesList.smoothScrollToPosition(adapter.getItemCount());
        }
    });
Run Code Online (Sandbox Code Playgroud)

我强烈建议您查看该最小应用程序完整代码


小智 0

请检查您的 getItemCountMethod 并参考您在适配器中使用的列表的大小

   @Override
public int getItemCount() {
    return list.size();
}
Run Code Online (Sandbox Code Playgroud)