soc*_*qwe 5 android android-recyclerview
我有Adapter多种视图类型.我注意到onCreateViewHolder()即使这种情况经常被调用onCreateViewHolder(),onBindViewHolder()并且getItemViewType()正确实现.
例如,我的RecyclerView应该显示这样的不同项目的简单列表,并假设所有项目具有相同的视图高度,并且6个元素填充整个屏幕(匹配RecyclerView的高度):
> ViewType0
> ViewType0
> ViewType0
> ViewType0
> ViewType0
> ViewType1
> ViewType2
> ViewType2
> ViewType2
> ViewType2
> ViewType1
> ViewType1
> ViewType1
> ViewType0
> ViewType0
> ViewType0
Run Code Online (Sandbox Code Playgroud)
在滚动并到达列表的末尾时,似乎对于最后两个项目(ViewType0)RecyclerView调用onCreateViewHolder()但从我的观点来看,recyclerview应该回收(重用)已经存在的那个(列表顶部有5个是不是visibile)而不是为最后两个项目重新创建两个新的.
这种行为是正常的吗?我可以应用的设置是为了避免重新创建新的ViewHolder,因为应该有可重复使用的ViewHolders(从列表的顶部)?
这是完全正常的。我将简要解释它是如何工作的。
一旦任何视图滚出窗口,RecyclerView 有两个选项:回收或重用该视图。它通过简单地将下一个出现的下一个项目的 viewType 与滚动出的视图进行比较来确定要选择的选项;如果它们相同,则只需重用视图,反之亦然。
在您的情况下,在最后两个 ViewType0 视图设置显示之前,这 5 个 ViewType0 视图肯定会被回收很长时间,因此它显示视图的唯一方法是重新创建它。
| 归档时间: |
|
| 查看次数: |
860 次 |
| 最近记录: |