2016-11-21 78 views
0

目前我正在學習recyclerview和使用本教程 http://wiseassblog.com/2016/06/22/android-recyclerview-tutorial-onclick-and-design-part-3b/最佳更新Recyclerview數據

在教程編寫代碼的方式的傢伙說,他提出了更新recyclerview數據的方式是不利於程序,從互聯網數據庫中獲取數據,這就是我需要它做的。

所以我想問問你做這個程序的最佳方式是什麼,以便程序能正常工作?

當前代碼是:

@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(); 

    } 

和適配器上:

public void setListData(ArrayList<ListItem> exerciseList) { 

    this.listData.clear(); 

    this.listData.addAll(exerciseList); 

} 
+0

這取決於要求。如果你正在努力製作喜歡/喜歡,這將被存儲在本地,你可以使用這種方式。此外,完全使用Web服務將保持您的收藏夾,您需要同時更新它。最佳實踐可以克隆來自Web的數據,進行所需的任何更改並更新服務器onPause。這樣你可以避免保持刷新Recycler View這是昂貴的。 –

回答

0

它看起來像點擊次級圖標是爲了:1)切換的該項目是否是值最喜歡的,然後2)改變該項目的顯示,以指示偏袒。 所以你不想重建那個時候的整個列表。 你應該能夠取代:

//pass new data to adapter and update 

    adapter.setListData(listData); 

    adapter.notifyDataSetChanged(); 

adapter.notifyItemChanged(p); 

在適配器更新只是一個項目。