`陈大,你好。我遇到了一个问题。我使用GridLayoutManager创建多布局时,使用adapter.setSpanSizeLookUp()方法无效,如下:
@Override
protected void setUpView() {
super.setUpView();
adapter = new SampleMultipleListAdapter(dataList);
setAdapter(adapter);
GridLayoutManager gridLayoutManager =new GridLayoutManager(this,2);
setLayoutManager(gridLayoutManager);
adapter.setOnLoadMoreListener(listener, recycler.getRecyclerView());
adapter.setSpanSizeLookup(new BaseQuickAdapter.SpanSizeLookup() {
@Override
public int getSpanSize(GridLayoutManager gridLayoutManager, int position) {
return dataList.get(position).getSpanSize();
}
});
}
我试着自己给GridlayoutManager设置SpanSizeLookUp就可以了,代码如下:
class GridSizeLookUp extends GridLayoutManager.SpanSizeLookup {
@Override
public int getSpanSize(int position) {
return dataList.get(position).getSpanSize();
}
}
@Override
protected void setUpView() {
super.setUpView();
adapter = new SampleMultipleListAdapter(dataList);
setAdapter(adapter);
GridLayoutManager gridLayoutManager =new GridLayoutManager(this,2);
gridLayoutManager.setSpanSizeLookup(new GridSizeLookUp());
setLayoutManager(gridLayoutManager);
adapter.setOnLoadMoreListener(listener, recycler.getRecyclerView());
}
但是下拉加载更多时还是会有数组溢出等别的问题。
我想知道为什么adapter.setSpanSizeLookup()方法无效,是不是我哪里写的有问题?
数组溢出等问题已解决,目前使用自己给GridLayoutManager设置spanSapanSizeLookUp的方法已可以解决问题。但是adapter.setSpanSizeLookUp()方法仍未能正常工作。
多布局demo使用了setSpanSizeLookUp是有效的。
好的吧,我再看看源码,分析分析
getSpanSize 指定是占用GridLayoutManager中的几个格。如果GridLayoutManager(this,2);是2,public int getSpanSize(int position)返回2就会占满整个屏幕宽度,也就是2格的位置。
@Weimore
必须要先setAdapter()
再设置setSpanSizeLookup
还有这等bug ,必须要先setAdapter()
再设置setSpanSizeLookup
解决。
Most helpful comment
@Weimore
必须要先setAdapter()
再设置setSpanSizeLookup