【问题标题】:How to detect null value or no child values present in FirebaseRecyclerAdapter如何检测空值或 FirebaseRecyclerAdapter 中不存在子值
【发布时间】:2019-08-24 02:17:11
【问题描述】:

我在我的应用程序中广泛使用了 Firebase RecyclerViewAdapter,但由于下面的代码在没有任何数据首先加载的情况下不会触发 populateViewHolder,因此我无法显示初始加载的加载完成消息

RecyclerView recycler = (RecyclerView) findViewById(R.id.messages_recycler);
recycler.setHasFixedSize(true);
recycler.setLayoutManager(new LinearLayoutManager(this));

mAdapter = new FirebaseRecyclerAdapter<Chat, ChatHolder>(Chat.class, android.R.layout.two_line_list_item, ChatHolder.class, mRef) {
    @Override
    public void populateViewHolder(ChatHolder chatMessageViewHolder, Chat chatMessage, int position) {
        chatMessageViewHolder.setName(chatMessage.getName());
        chatMessageViewHolder.setText(chatMessage.getText());
    }
};
recycler.setAdapter(mAdapter);

【问题讨论】:

    标签: android firebase firebase-realtime-database firebaseui


    【解决方案1】:

    此功能涵盖了您所描述的内容:Handle empty state for recycleview。您可以通过在适配器中实现 onDataChanged() 来处理此问题。一个snippet from the sample app of FirebaseUI

    @Override
    protected void onDataChanged() {
        // if there are no chat messages, show a view that invites the user to add a message
        mEmptyListView.setVisibility(
            mRecyclerViewAdapter.getItemCount() == 0 ? View.VISIBLE : View.INVISIBLE
        );
    }
    

    【讨论】:

      【解决方案2】:

      if(chatMessage.getName().equals("")){ //空值 }else{ //执行代码 }

      【讨论】:

      • 如果整个节点是空的,它首先不会触发..,所以上面的解决方案是行不通的。
      【解决方案3】:

      覆盖 onDataChanged() 并签入

      mAdapter = new FirebaseRecyclerAdapter<Chat, ChatHolder>(Chat.class, android.R.layout.two_line_list_item, ChatHolder.class, mRef) {
          @Override
          public void populateViewHolder(ChatHolder chatMessageViewHolder, Chat chatMessage, int position) {
              chatMessageViewHolder.setName(chatMessage.getName());
              chatMessageViewHolder.setText(chatMessage.getText());
          }
      
          @Override
          protected void onDataChanged() {
          // do your tests here
          }
      };
      

      【讨论】:

        猜你喜欢
        • 2021-12-14
        • 1970-01-01
        • 1970-01-01
        • 2014-08-05
        • 2023-03-30
        • 2011-08-31
        • 2016-10-12
        • 2020-12-27
        • 1970-01-01
        相关资源
        最近更新 更多