2016-11-21 5 views
0

ich zur Zeit über recyclerview lerne und einen Code zu schreiben dieses Tutorial mit http://wiseassblog.com/2016/06/22/android-recyclerview-tutorial-onclick-and-design-part-3b/Der beste Weg Recyclerview Daten aktualisieren

Im Tutorial sagt der Mann, dass die Art, wie er mit der Aktualisierung der recyclerview präsentierten Daten für Programme, die nicht gut ist, dass Nimmt Daten von Internet-Datenbanken und das ist, was ich brauche es zu tun ..

Also wollte ich Sie fragen, was ist der beste Weg, um es in der Reihenfolge des Programms wird gut funktionieren?

der aktuelle Code ist:

@Override 

    public void onSecondaryIconClick(int p) { 

     ListItem item = (ListItem) listData.get(p); 

     //update our data 

     if (item.isFavourite()){ 

      item.setFavourite(false); 

     } else { 

      item.setFavourite(true); 

     } 

     //pass new data to adapter and update 

     adapter.setListData(listData); 

     adapter.notifyDataSetChanged(); 

    } 

und auf dem Adapter:

public void setListData(ArrayList<ListItem> exerciseList) { 

    this.listData.clear(); 

    this.listData.addAll(exerciseList); 

} 
+0

Es hängt von den Anforderungen ab. Wenn Sie daran arbeiten, like/favorite zu erstellen, die lokal gespeichert werden, können Sie diese Methode verwenden. Abgesehen davon, dass Sie vollständig am Web Service arbeiten, der Ihre Favoriten enthält, müssen Sie ihn gleichzeitig aktualisieren. Best Practice kann geklont werden die Daten aus dem Web machen, was auch immer Sie wollen und den Server onPause aktualisieren. Auf diese Weise können Sie vermeiden, Recycler View zu aktualisieren, was kostspielig ist. –

Antwort

0

Es ist wie Sie auf dem sekundären Symbol sieht soll: 1) schalten Sie den Wert, ob dieser Artikel ist ein Favorit und dann 2) ändern Sie die Anzeige dieses Artikels, um Bevorzugung anzuzeigen. Sie möchten also nicht die gesamte Liste zu diesem Zeitpunkt neu erstellen. Sie sollten ersetzen können:

//pass new data to adapter and update 

    adapter.setListData(listData); 

    adapter.notifyDataSetChanged(); 

mit

adapter.notifyItemChanged(p); 

nur, dass ein Element in dem Adapter zu aktualisieren.

Verwandte Themen