【发布时间】:2015-01-14 20:05:18
【问题描述】:
我使用 RecyclerView 以列表布局显示项目列表。我从列表布局切换到网格布局,在网格布局中只显示所有数据的子集。此开关使用与显示列表布局时不同的布局 XML。
所有这一切都很好,除了当我滚动时,回收(缓存?)列表布局视图填充网格,与适当的网格布局视图项混合。换句话说,我没有在 RecyclerView 中为每个项目的布局使用我的 layout_grid.xml,而是使用 layout_list.xml 布局获取项目,但采用网格格式。
这告诉我 LayoutManager 工作正常,从列表切换到网格布局。但并非所有项目视图项目都使用网格 xml 布局重新创建,而是使用回收的列表布局视图。
我尝试了RecyclerView.removeAllViews()、RecyclerView.removeAllViewInLayout()、RecyclerView.swapAdapter()(强制适配器重新加载),但均无济于事。
更新:
如果我在列表中向下滚动两个位置,然后从列表切换到网格,前两个位置不会通过 onCreateViewHolder(),而是直接到 onBindViewHolder(),因此不会强制使用网格布局 xml .相反,前两个位置项被回收(我认为)并以其列表布局格式显示。
【问题讨论】:
标签: android android-recyclerview