我有RecyclerView
个自定义Adapter
,可以在网格中显示矩形元素(大约15个,如果用户添加/删除项目,则数字可以更改)(使用Gridlayout Manager
) 。
这些元素由ImageView
和TextView
组成。我希望在收到网络请求的新结果后(例如每2分钟)定期更新两个视图。
更新这些视图的最佳方法是什么?如何识别具体的ViewHolder
?如何访问这些元素的ViewHolder
值?最好是保留ViewHolder
中我想要更改它们的每个Activity
的引用吗?或者我应该使用新值创建一个新元素并用它替换当前元素?什么是最佳做法?
答案 0 :(得分:3)
如果要将图像视图和文本视图的值存储在arraylist中,则可以在数据集发生更改时调用适配器上的notifyDataSetChanged。
例如,如果你说一个Grid对象,其属性包括image uri(设置图像)和string(在文本视图中设置)和一些Array列表说
List<Grid> gridList = new ArrayList<>();
你可以更新你在Arraylist中获得的任何新数据以及在数组列表调用中完成更新之后
adapter.notifyDataSetChanged();
答案 1 :(得分:1)
最佳做法是更新视图及其在某些数据发生变化时的数据。你必须始终这样做。方法
adapter.notifyDataSetChanged
为你这样做。
当您更新一些必须告诉系统的数据时,因为有一个名为recycle的重要操作,当您使用视图持有者时,您可以让系统回收视图,这意味着存储不会更改日期的视图在视图持有者上,所以列表不需要使用
findViewById
一次。