1

Ich habe RecyclerView mit benutzerdefinierten RecyclerView Adapter.Update RecyclerView Adapter nach SharedPreferences geändert

Jede Zeile von RecyclerView "öffnet" (wenn Benutzer darauf geklickt hat) mit CardFlipAnimation (AnimatorSet).

In jeder Zeile gibt es eine Schaltfläche, die den Wert int in SharedPreferences ändert, und TextView, die diesen Wert zeigt.

Wenn ich mehr als eine Zeile geöffnet habe, muss ich alle TextViews in allen Zeilen dynamisch ändern, die geöffnet werden.

NotifyDataSetChanged und etc aktualisiert Daten in RecyclerView groß, aber das ist ein Problem, dass sie geöffnet Reihen schließen (weil für standart Thay sind geschlossen und öffnen Sie dann mit AnimatorSet)

Meine Hauptaufgabe besteht nun darin, zu verstehen, wie nur aktualisieren Ein TextView in allen geöffneten Reihen und um sie offen zu halten (nicht berühren AnimatorSet). Ich denke, ich kann ein Observer verwenden, aber ich wusste nicht, wie er ihn richtig implementieren.

Wenn Sie irgendwelche Ideen, bitte helfen Sie mir.

Danke für Antworten

Antwort

0

Ok, finaly ich eine Lösung habe, dann ist es ein bisschen hässlich, aber es funktioniert genau so, wie ich brauche.

Erste: Ich gebe mein RecyclerView

 ... 
     public CardBaseAdapter(RecyclerView recyclerView,...) { 
     ... 
     this.mRecyclerView = recyclerView; 
     .... 

Zweite Adapter: Erstellen Sie eine Methode in meinem Adapter:

public void updateViews() { 

     for(int i =0;i<getItemCount();i++){ 

      HeaderViewHolder holder = (HeaderViewHolder)recyclerView.findViewHolderForAdapterPosition(i); 
      if(holder!=null){ 

      //Update views at holders 
      } 

     } 

} 

Dritte: Rufen Sie diese Funktion, wenn es nötig ist Ansicht aktualisieren

PS Ich bin mir nicht sicher, ob dies der richtige Weg ist, um Ansichten zu aktualisieren, aber es funktioniert, wenn Sie eine andere, gute Lösung kennen, schreiben Sie es bitte

Verwandte Themen