在RecyclerView适配器getItemViewType()中为每个位置返回不同的值是什么意思?

时间:2017-07-21 13:54:37

标签: android android-recyclerview adapter android-viewholder

如标题所示,如果我覆盖RecyclerView适配器中的getItemViewType(int position)

@Override
public int getItemViewType(int position) {
    return position;
}

这是否意味着我没有获得回收的观点?既然这意味着我在每个位置都有不同类型的视图?

如果是,这相当于setIsRecyclable(true)

我问这个是因为我遇到了一个问题,即RecyclerView项目混合并在无休止的滚动中重复。尝试getItemViewId()返回唯一ID,但没有效果。它只有两种工作方式是setIsRecyclable(true),并为getItemViewType(position)

中的每个位置返回不同的值

1 个答案:

答案 0 :(得分:0)

getItemViewType()告诉RecyclerView该职位的观点是什么。请参阅documentation

  

<强> getItemViewType

     

返回项目的视图类型,以便进行视图回收。

     

此方法的默认实现返回0,假设适配器具有单一视图类型。与ListView适配器不同,类型不需要是连续的。考虑使用id资源来唯一标识项目视图类型。

     

...

     

返回int整数值,用于标识表示位置项目所需的视图类型。类型代码不必是连续的。

您的代码不会阻止视图被回收。我不认为您想要返回该位置,因为这表明您对每个位置都有不同类型的视图。