![](/img/trans.png)
[英]How to know if new data in a RecyclerView is greater than the last updated data
[英]Recyclerview is not updated with new Data
我們,
我有一個帶有RecyclerView
的片段。 RecyclerView
由Firebase的“DatabaseReference”對象填充,在該引用上我添加了一個ValueListener,如下所示:
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
擴展了FirebaseRecyclerAdapter
。 問題是onDataChange
在onResume
之后發生,因此有時回收器是空的。 我無法理解的事實是,回收者視圖並不總是空的。 有時顯示數據,有時不顯示。
謝謝
實際上是onResume(); 與活動onResume()嚴格綁定;
如果您正在使用viewpager,那么片段中有一個方法
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
//do your logic . updating recycler view
}
如果你在framelayout中有效
然后你可以在onViewCreated()中更新;
我想如果你使用FirebaseRecyclerAdapter
(或任何擴展的類)作為RecyclerView
適配器,你應該設置recyclerView.setHasFixedSize(false)
。 因此, recyclerView
知道數據不斷更新。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.