2016-09-07 18 views
8

Mam ten kod w moim populateViewHolder:Jak wykluczyć element z 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... 

Chcę usunąć element, jeśli !dataSnapshot.hasChild(getUid()) jest true, inaczej po prostu zachować na wypełnianie ViewHolder normalnie. Zauważ, że nie chcę, aby usunąć przedmiot z bazy danych, chcę tylko, aby zniknął z FirebaseRecyclerAdapter. Jaka metoda jest dostępna w tym celu?


Edit: Ja nadal szuka rozwiązania tego problemu, ponieważ ma nie została ustalona. Moje rozwiązanie jest WYSOKIE odradzane i bardzo zła praktyka, i ponownie rozważyłem korzystanie z niego osobiście.

+0

Wygląda na to, następnym razem będę musiał dać bounty 400 Rep –

+0

hii, chcę wykluczyć określone rekordy od Firebase, jak gdyby data złożony jest <= 1 godzina .. czy macie jakieś Wskazówka? dzięki! –

Odpowiedz

1

Aktualizacja: Jest to bardzo zła praktyka i bardzo glitchy. I BARDZO zniechęcić KTOŚ używać tego od niego będzie dokonać RecyclerView bardzo glitchy i spowoduje nadmierne obciążenie danych, która jest nie to co użytkownicy chcą.

skończyło się go ręcznie tak:

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

mówi Ten, jeśli x jest true, uzyskać wiersz i ustawić jego widoczność GONE. To rozwiązało problem dla mnie. Prawdopodobnie rozwiążę to na GitHub.

+0

Nie ustawiaj go, aby zniknął, ustaw jego wysokość na 0 (i ustaw wysokość na normalną dla pozostałych elementów) – EpicPandaForce