我遇到了我怀疑可能是Androids GridLayoutManager
中的错误。我有一个简单的设置:RecyclerView
使用带有GridLayoutManager
的{{1}}(下面的代码)。布局管理器中使用的列数是可变的;由屏幕尺寸和屏幕方向决定。
我按如下方式初始化我的布局管理器:
SpanSizeLookup
我的 layoutManager = new GridLayoutManager(getContext(),
getResources().getInteger(R.integer.products_per_row));
recyclerView.setLayoutManager(layoutManager);
使用以下SpanSizeLookup
方法
getSpanSize
Android一切都按预期工作:当屏幕旋转时,列数会相应更改而不会崩溃。但是,如果屏幕是纵向的,并且用户开始活动(例如,通过打开通知中的应用程序),这会强制它进行横向定位,我会遇到以下崩溃:
@Override
public int getSpanSize(int position) {
return position == 0 ?
getResources().getInteger(R.integer.products_per_row)) : 1;
}
为了绝对清晰:R.integer.products_per_row为1,#34;正常"在这种情况下,屏幕尺寸设备为纵向,2个为横向设备。
现在我完全接受这可能是我的代码中的错误但是我没有看到我在这里做错了什么。