首页 > 解决方案 > 在 Android 上异步更新 RecyclerView 中的所有项目

问题描述

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

您如何遍历回收站视图中的项目并随后进行更新。我从 listview 移到了 recycler,因为它有一个 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 但这将是更多的工作。

谢谢大家。

标签: androidandroid-recyclerview

解决方案


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

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

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

adapterObj.notifyItemRangeChanged(start, end)//对于一个范围


推荐阅读