我有一个回收者视图,我想在初始创建后更新每个项目的一个属性,以便为用户提供更好的体验。我想异步执行此操作,因为它需要时间来获取数据。
如何在“回收者”视图中遍历项目并随后进行更新。我从列表视图移到回收站,因为它具有方法NotifyItemChanged。
所以理想情况下我想做
void OnRefresh(IList<data> data)
{
Data = data;
NotifyDataSetChanged();
Task.Run(() => UpdateAllAttribute1Fields());
}
void UpdateAllAttribute1Fields()
{
foreach(var myItem in myRecyclerView.Items)
{
UpdateAttribute1(myItem));
}
}
但是我不知道如何访问myItems。在Windows上(对不起),在列表视图中,这应该是listview.items。
我可以保存OnBindViewHolder视图,但这将需要更多的工作。
谢谢。
答案 0 :(得分:2)
您不需要遍历recyclerview中的所有项目进行更新,只需将RecyclerView设置为指向您的自定义数据集即可。并在需要时异步更新数据集。然后,您可以使用其适配器的以下方法通知recyclerview数据集中的数据已更改(它将自动更新recyclerview内容)
adapterObj.notifyItemChanged(pos)
//对于一个对象
adapterObj.notifyDataSetChanged()
//用于整个数据集
adapterObj.notifyItemRangeChanged(start, end)
//用于范围