2016-09-07 75 views
8

我有這樣的代碼在我populateViewHolder排除項目:如何從FirebaseRecyclerAdapter

public void populateViewHolder(final CampaignHolder viewHolder, final Campaign campaign, final int position) { 
      String k = getRef(position).getKey(); 
      ref.child(k).child("users").addListenerForSingleValueEvent(new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        if (!dataSnapshot.hasChild(getUid())) { 
         //Something... 
        } 
       } 

       @Override 
       public void onCancelled(DatabaseError databaseError) { 

       } 
      }); 
      //...Populating the viewholder... 

我想刪除的項目,如果!dataSnapshot.hasChild(getUid())true,否則只是繼續正常填充ViewHolder。請注意,我不想從數據庫中刪除項目,我只希望它從FirebaseRecyclerAdapter消失。有什麼方法可以做到這一點?


編輯:我仍在尋找這個問題的解決方案,因爲它有沒有固定。我的解決方案是非常不鼓勵和非常糟糕的做法,我已經重新考慮自己使用它。

+0

貌似下次我得給400代表賞金 –

+0

斐伊川,我想從火力排除特定記錄,就像如果申請日期是<=1小時..你有什麼線索?謝謝! –

回答

1

更新:這是非常不好的做法非常出問題。我HIGHLY勸阻任何人使用這個,因爲它讓你RecyclerView非常出問題,將導致多餘的數據加載,這是用戶想今非昔比。

我結束了手動使它像這樣:

if(x) 
    viewHolder.itemView.setVisibility(View.GONE); //itemView is a view provided by Android, no need to initiate it. 

這上面說,如果xtrue,獲取該行並將其可見性設置爲GONE。這解決了我的問題。我可能會在GitHub上進行分析。

+0

不要將其設置爲「不存在」,請將其高度設置爲0(並將其他元素的高度設置爲正常) – EpicPandaForce

相關問題