我正在将Recyclerview与GridLayoutManager一起使用,以查看具有不同类型和不同SpanSize的多个Viewholder:
listsLayoutManager.setSpanCount(6);
listsLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
if (adapter.getItemViewType(position) == VODsGridRVAdapter.TYPE_TITLE || adapter.getItemViewType(position) == VODsGridRVAdapter.TYPE_HEADER)
return 6;
return 1;
}
});
这是getItemViewType方法:
@Override
public int getItemViewType(int position) {
if (position == 0)
return TYPE_HEADER;
return dataList.get(position - 1).isTitle() ? TYPE_TITLE : TYPE_ITEM;
}
位置0始终是标题。
滚动视图时,onBindViewHolder会给出错误的位置,而getAdapterPosition会这样做。
除了使用holder.setIsRecyclable(false);
之外,还有什么解决方法?
答案 0 :(得分:0)
经过36个小时的调试和尝试,我能够通过删除活动中的adapter.setHasStableIds(true);
行来解决此问题。