问题
我想要为一个RecyleView设置多个适配器,实现切换布局的效果,在虚拟机上测试完全没问题,实现了点击更换适配器的效果。但是安装在真机上进行测试时发现点击后布局没有加载,整个RecycleView是空白的。
原本的实现思路
直接调用 RecycleView 的setAdapter()
来重置适配器,更换布局,可是失败了。仔细观察发现,每次在 onCreateView()
中更新 RecycleView 都会设置布局管理器 setLayoutManager()
。之前的想法是已经设置一次,那么 RecycleView 就没有必要再设置,直接调用 setAdapter()
来替换适配器。
解决方案
既然无法更新,那么直接将 RecycleView 当作新加载的实例,全部重新获取。包括布局管理器的设置。果然,在调用每一个 setAdapter()
前都重新调用 setLayoutManager()
确实产生了效果,真机上测试完美通过。
// 获取瀑布流的布局管理器
StaggeredGridLayoutManager layoutManager =
new StaggeredGridLayoutManager