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时,它神奇地工作了。谢谢。