今天来给大家介绍recyclerview关于gridlayoutmanager的用法,废话不多说,上效果图:
![P2Y]J)Q`0G%6RA6QXEWSHA.png
我们知道recyclerview实现GridView效果只需配置一下参数就行了
GridLayoutManager layoutManage = new GridLayoutManager(getContext(), 2);
recycerView.setLayoutManager(layoutManage);
我们会注意到GridLayoutManager里边有个setSpanSizeLookup方法,本篇的重点就是这个方法(这个方法具体意义大家可以网上搜索,会有很多相关介绍,以及通过它实现一些复杂的布局,再次不做过多讨论)
layoutManage.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
return 0;
}
});
其实getSpanSize返回值就是控制每行有几列的,根据这个思路我们不妨试试。因为recyclerview填充数据是根据adapter实现的,我们就把给adapter的数据源同样在setSpanSizeLookup这个方法里边判断一下不就行了吗?
根据这个思路于是有了下面的代码
/**
* 如果单个item显示的字数大于指定某个值就显示一列 默认2列
*/
//设置item数据大于多少字只显示一行 默认 超过九个字的程度只显示一列
private static final int MAX = 9;
private int setSpanSize(int position, List<TagBean> listEntities) {
int count;
if (listEntities.get(position).getTag_name().length() > MAX) {
count = 2;
} else {
count = 1;
}
return count;
}
layoutManage.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
return setSpanSize(position,list);
}
});
核心代码就这么多,我们可以根据自己的需求随意定制样式