- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个数据集,它可能会在刷新时发生变化。很难确定现有数据集中的哪些条目已更改。我通读了 recyclerview 适配器说明,我的主要问题是。
确定更改了哪个数据 View ,然后对受影响的范围使用 notifyItemRangeChanged 是否更有效,还是我应该一个一个地更改它们,然后在每个数据 View 更改后使用 notifyItemChanged?
它变得稍微复杂一些,因为根据更改的内容,每个 View 的顺序可能已经更改,那么它是调用 notifyItemRangeInserted 的参数,为受影响的范围调用 notifyItemRangeRemoved,还是一个一个地调用 notifyItemMoved?
哪种方式更有效?
谢谢
最佳答案
这是源代码,v7-22.1.1
/**
* Notify any registered observers that the item at <code>position</code> has changed.
*
* <p>This is an item change event, not a structural change event. It indicates that any
* reflection of the data at <code>position</code> is out of date and should be updated.
* The item at <code>position</code> retains the same identity.</p>
*
* @param position Position of the item that has changed
*
* @see #notifyItemRangeChanged(int, int)
*/
public final void notifyItemChanged(int position) {
mObservable.notifyItemRangeChanged(position, 1);
}
/**
* Notify any registered observers that the <code>itemCount</code> items starting at
* position <code>positionStart</code> have changed.
*
* <p>This is an item change event, not a structural change event. It indicates that
* any reflection of the data in the given position range is out of date and should
* be updated. The items in the given range retain the same identity.</p>
*
* @param positionStart Position of the first item that has changed
* @param itemCount Number of items that have changed
*
* @see #notifyItemChanged(int)
*/
public final void notifyItemRangeChanged(int positionStart, int itemCount) {
mObservable.notifyItemRangeChanged(positionStart, itemCount);
}
所以,notifyItemChanged(int)
是 notifyItemRangeChanged(int, int)
关于Android RecyclerView notifyItemRangeChanged 与 notifyItemChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28743254/
我遇到了与 RecyclerView#Adapter 有关 notifyItemRangeChanged 的问题。似乎如果 Adapter 从上次调用 getItemCount 时认为它的大小为 0,
我有一个数据集,它可能会在刷新时发生变化。很难确定现有数据集中的哪些条目已更改。我通读了 recyclerview 适配器说明,我的主要问题是。 确定更改了哪个数据 View ,然后对受影响的范围使用
布局设计: HorizontalScrollView-parent, holding RV[ RecyclerView=>(GridLayoutManager) (orientation ve
精简版 我调用了 adapter.notifyItemRangeChanged(),但看到(通过日志语句)指定范围之外的位置正在重新绑定(bind)。什么可能导致这种情况? 更长的版本 我的应用程序包
我了解 ViewHolder 的 onBindViewHolder 是如何工作的,但是我不清楚 notifyItemRangeChanged(0, this.data.size()); 在此示例中的工
我是一名优秀的程序员,十分优秀!