我使用RecyclerView显示列表布局的项目列表.我从列表布局切换到网格布局,在网格布局中只显示所有数据的一个子集.该交换机使用不同于布局列表的布局

XML.

所有这一切都很好,除了当我滚动,回收(缓存?)列表布局视图填充网格,混合在适当的网格布局视图项目.换句话说,而不是在RecyclerView中为每个项目的布局使用我的layout_grid.xml,我使用layout_list.xml布局获取项目,但是以网格格式.

这告诉我LayoutManager正常工作,从列表切换到网格布局.但是并不是所有的项目视图项目都使用网格xml布局重新创建,而是使用了循环的列表布局视图.

我尝试RecyclerView.removeAllViews(),RecyclerView.removeAllViewInLayout(),RecyclerView.swapAdapter()(强制适配器重新加载),都无济于事.

更新:

如果我在列表中向下滚动两个位置,然后从列表切换到网格,则前两个位置不会通过onCreateViewHolder(),而是直接到onBindViewHolder(),因此不会强制使用网格布局xml.相反,前两个位置项目被回收(我想)并以其列表布局格式显示.

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐