2017-02-05 11 views
0

我在應用程序中廣泛使用了Firebase RecyclerViewAdapter,但由於下面的代碼不會在沒有任何數據加載的情況下觸發populateViewHolder,所以無法顯示加載完成消息的初始負載如何檢測FirebaseRecyclerAdapter中的空值或無子值

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

回答

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 
    ); 
} 
0

如果(chatMessage.getName()。等於( 「」)){//空值}其他{ //執行代碼}

+0

如果整個節點是空的它沒有在第一時間觸發..,所以上述的解決方案是行不通的。 – Gowrav