2016-11-21 45 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); 

在适配器更新只是一个项目。