如何检测空值或 FirebaseRecyclerAdapter 中不存在子值

How to detect null value or no child values present in FirebaseRecyclerAdapter

我在我的应用程序中广泛使用了 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);

if(chatMessage.getName().equals("")){ //null value }else{ //execute code }

此功能涵盖您所描述的内容:Handle empty state for recycleview. You can handle this by implementing onDataChanged() in your adapter. A 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
    );
}

覆盖 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
    }
};