如标题所示,如果我覆盖RecyclerView适配器中的getItemViewType(int position)
:
@Override
public int getItemViewType(int position) {
return position;
}
这是否意味着我没有获得回收的观点?既然这意味着我在每个位置都有不同类型的视图?
如果是,这相当于setIsRecyclable(true)
?
我问这个是因为我遇到了一个问题,即RecyclerView项目混合并在无休止的滚动中重复。尝试getItemViewId()
返回唯一ID,但没有效果。它只有两种工作方式是setIsRecyclable(true)
,并为getItemViewType(position)
答案 0 :(得分:0)
getItemViewType()
告诉RecyclerView
该职位的观点是什么。请参阅documentation。
<强> getItemViewType 强>
返回项目的视图类型,以便进行视图回收。
此方法的默认实现返回0,假设适配器具有单一视图类型。与ListView适配器不同,类型不需要是连续的。考虑使用id资源来唯一标识项目视图类型。
...
返回int整数值,用于标识表示位置项目所需的视图类型。类型代码不必是连续的。
您的代码不会阻止视图被回收。我不认为您想要返回该位置,因为这表明您对每个位置都有不同类型的视图。