我正在使用22.2.1 RecyclerView库。
我有一个RecyclerView.Adapter
,显示由ArrayList
支持的项目的垂直列表。
在某些情况下(例如,如果X == true
),它还会在位置0显示不同的项目。getItemCount
如下所示:
return (X ? 0 : 1) + items.size();
当X变为真时,我呼叫notifyItemInserted(0)
。之后,调用onBindViewHolder
,其位置等于getItemCount
,然后onBindViewHolder
调用位置为0。
问题是位置1和2(items
中的位置0和1)都显示items.get(1)
的项目。这里要说明的是两种情况下显示的内容:
X == false
X == true
但是,如果X == true
最初,那么一切都会正确显示。
我的解决方法是:
notifyItemInserted(0);
notifyItemRangeChanged(1, items.size()); // workaround
但我不相信我应该这样做。有人有什么想法吗?