【问题标题】:Recyclerview GridlayoutManager OnBindViewHolder position & getAdapterPosition() is wrong when scrollingRecyclerview GridlayoutManager OnBindViewHolder position & getAdapterPosition() 滚动时出错
【发布时间】:2018-10-14 16:18:18
【问题描述】:

我正在使用 Recyclerview 和 GridLayoutManager 来查看多个不同类型和不同 SpanSize 的视图:

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); ,有没有解决这个问题的方法?

【问题讨论】:

    标签: android


    【解决方案1】:

    经过 36 小时的调试和尝试,我能够通过从我的 Activity 中删除 adapter.setHasStableIds(true); 行来解决这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-10
      • 2018-03-23
      • 2018-10-08
      • 2018-12-26
      相关资源
      最近更新 更多