- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我遇到了与 RecyclerView#Adapter
有关 notifyItemRangeChanged
的问题。似乎如果 Adapter
从上次调用 getItemCount
时认为它的大小为 0
,然后我调用 Adapter# notifyItemRangeChanged(0, 1)
,适配器
将简单地忽略调用(例如,它不会导致插入新项目)。
这是预期的行为吗?
最佳答案
Is this the expected behavior?
简短的回答:是的。
来自 notifyDataSetChanged()
上的文档(是的,不同的方法,我知道,但只是在这里引用它,因为它解释了项目更改和结构更改之间的区别):
There are two different classes of data change events, item changes and structural changes. Item changes are when a single item has its data updated but no positional changes have occurred. Structural changes are when items are inserted, removed or moved within the data set.
现在阅读关于 notifyItemRangeChanged()
的文档(我的重点):
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.
这应该可以回答您的问题。您正在进行结构性更改(即,您正在添加一个项目),因此 notifyItemRangeChanged()
不是适当的方法称呼。相反,您应该调用 notifyItemRangeInserted()
(或其单数等效项),这确实表明进行了结构更改。
关于android - RecyclerView notifyItemRangeChanged 不显示新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32769009/
我遇到了与 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()); 在此示例中的工
我是一名优秀的程序员,十分优秀!