在Android上异步更新RecyclerView中的所有项目

时间:2019-01-04 07:21:20

标签: android android-recyclerview

我有一个回收者视图,我想在初始创建后更新每个项目的一个属性,以便为用户提供更好的体验。我想异步执行此操作,因为它需要时间来获取数据。

如何在“回收者”视图中遍历项目并随后进行更新。我从列表视图移到回收站,因为它具有方法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视图,但这将需要更多的工作。

谢谢。

1 个答案:

答案 0 :(得分:2)

您不需要遍历recyclerview中的所有项目进行更新,只需将RecyclerView设置为指向您的自定义数据集即可。并在需要时异步更新数据集。然后,您可以使用其适配器的以下方法通知recyclerview数据集中的数据已更改(它将自动更新recyclerview内容)

adapterObj.notifyItemChanged(pos) //对于一个对象

adapterObj.notifyDataSetChanged() //用于整个数据集

adapterObj.notifyItemRangeChanged(start, end) //用于范围