簡體   English   中英

Recyclerview未使用新數據進行更新

[英]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 問題是onDataChangeonResume之后發生,因此有時回收器是空的。 我無法理解的事實是,回收者視圖並不總是空的。 有時顯示數據,有時不顯示。

謝謝

實際上是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM