Recyclerview没有更新新的数据 [英] Recyclerview is not updated with new Data

查看:326
本文介绍了Recyclerview没有更新新的数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好,



我有一个带有 RecyclerView 的片段。这个 RecyclerView 由Firebase的'DatabaseReference'对象填充,并且在那个引用上添加了一个ValueListener,如下所示:

<$我们可以通过一个简单的例子来说明如何使用onCreateView来实现这个功能。
View view = inflater.inflate(R.layout.fragment_home,container,false);

$ b databaseReference.addValueEventListener(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot){
//做某事

$ b $ @Override
public void onCancelled(DatabaseError databaseError){
//获取发布失败,记录消息
Log.w(TAG,onCancelled ,databaseError.toException());
}
});

ItemRecyclerViewAdapter adapter = new ItemRecyclerViewAdapter(activity,itemsDatabaseReference);
adapter.setHasStableIds(true);
//使用线性布局管理器
RecyclerView recyclerView =(RecyclerView)view.findViewById(R.id.recyclerview);
recyclerView.setHasFixedSize(true);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(layoutManager);
DividerItemDecoration itemDecoration = new DividerItemDecoration(getContext(),
DividerItemDecoration.VERTICAL_LIST);
recyclerView.addItemDecoration(itemDecoration);
recyclerView.setAdapter(adapter);

返回视图;



$ b $ Item $ $ ItemRecyclerViewAdapter extends FirebaseRecyclerAdapter 。问题在于 onDataChange 发生在 onResume 之后,所以有时候回收站是空的。我不明白的是,回收者的观点并不总是空的。有时数据显示,有时不显示。



谢谢

如果你使用 FirebaseRecyclerAdapter (或者任何扩展的类)作为你的 RecyclerView 适配器,你应该设置 recyclerView.setHasFixedSize(假)。所以 recyclerView 知道数据不断更新。


Hiy guys,

I have a fragment with a RecyclerViewin it. That RecyclerView is populated by a Firebase 'DatabaseReference' object and on that reference I have added a ValueListener as follows:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle
        savedInstanceState) {
    Log.d(TAG, "onCreateView");
    View view = inflater.inflate(R.layout.fragment_home, container, false);


   databaseReference.addValueEventListener(new ValueEventListener() {
               @Override
               public void onDataChange(DataSnapshot dataSnapshot) {
                   //Do something
               }

               @Override
               public void onCancelled(DatabaseError databaseError) {
                   // Getting Post failed, log a message
                   Log.w(TAG, "onCancelled", databaseError.toException());
               }
           });

         ItemRecyclerViewAdapter  adapter = new ItemRecyclerViewAdapter(activity, itemsDatabaseReference);
           adapter.setHasStableIds(true);
           // use a linear layout manager
          RecyclerView recyclerView = (RecyclerView) view.findViewById(R.id.recyclerview);
           recyclerView.setHasFixedSize(true);
           RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getActivity());
           recyclerView.setLayoutManager(layoutManager);
           DividerItemDecoration itemDecoration = new DividerItemDecoration(getContext(),
                   DividerItemDecoration.VERTICAL_LIST);
           recyclerView.addItemDecoration(itemDecoration);
           recyclerView.setAdapter(adapter);

    return view;
}

ItemRecyclerViewAdapter extends FirebaseRecyclerAdapter. The problem is that onDataChange happens after onResume so that at times the recycler is empty. What I can't understand is the fact that the recycler view is not always empty. Sometimes data are shown and sometimes not.

Thanks

解决方案

I think if you are using FirebaseRecyclerAdapter (or any class extended from that) as your RecyclerView adapter, you should set recyclerView.setHasFixedSize(false). So the recyclerView knew that data is constantly updated.

这篇关于Recyclerview没有更新新的数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆