android - 在 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 但这将是更多的工作。
谢谢大家。
解决方案
您不需要遍历 recyclerview 中的所有项目来更新,只需将 RecyclerView 设置为指向您的自定义数据集。并随时异步更新数据集。然后您可以通过其适配器的以下方法通知recyclerview数据集中的数据已更改(这将自动更新recyclerview内容)
adapterObj.notifyItemChanged(pos)
//对于一个对象
adapterObj.notifyDataSetChanged()
//对于整个数据集
adapterObj.notifyItemRangeChanged(start, end)
//对于一个范围
推荐阅读
- spring-data-elasticsearch - 如何在没有索引的情况下使用 spring data elasticsearch 在 Elasticsearch 中存储字节数组字段?
- matlab - 如何在 Matlab 中为多个变量的超定二次系统找到 argmin/最佳拟合/优化
- java - Java 8+ ConcurrentHashMap 锁条带化
- python - Pandas 仅显示给定 id 的数据框中值的唯一实例
- flask-sqlalchemy - 将 SQLAlchemy AppenderBaseQuery 对象中的元素返回到 Flask-WTForm 字段
- python-3.x - ScalarCutPlane mayavi 未显示 Mayavi 等值面图的横截面(轮廓)
- java - 第二个while循环无休止地运行有人可以解释为什么吗?
- c# - 加载母版页时,Ajax.Get 调用未在部分视图中触发
- javascript - 单击按钮后为 html 页面动态生成的内容
- javascript - 用于插件的文本字段 onblur 的 Ember 表单不起作用