今天來給大家介紹recyclerview關(guān)于gridlayoutmanager的用法,廢話不多說,上效果圖:
![P2Y]J)Q`0G%6RA6QXEWSHA.png
我們知道recyclerview實(shí)現(xiàn)GridView效果只需配置一下參數(shù)就行了
GridLayoutManager layoutManage = new GridLayoutManager(getContext(), 2);
recycerView.setLayoutManager(layoutManage);
我們會注意到GridLayoutManager里邊有個setSpanSizeLookup方法,本篇的重點(diǎn)就是這個方法(這個方法具體意義大家可以網(wǎng)上搜索,會有很多相關(guān)介紹,以及通過它實(shí)現(xiàn)一些復(fù)雜的布局,再次不做過多討論)
layoutManage.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
@Override
public int getSpanSize(int position) {
return 0;
}
});
其實(shí)getSpanSize返回值就是控制每行有幾列的,根據(jù)這個思路我們不妨試試。因?yàn)閞ecyclerview填充數(shù)據(jù)是根據(jù)adapter實(shí)現(xiàn)的,我們就把給adapter的數(shù)據(jù)源同樣在setSpanSizeLookup這個方法里邊判斷一下不就行了嗎?
根據(jù)這個思路于是有了下面的代碼
/**
* 如果單個item顯示的字?jǐn)?shù)大于指定某個值就顯示一列 默認(rèn)2列
*/
//設(shè)置item數(shù)據(jù)大于多少字只顯示一行 默認(rèn) 超過九個字的程度只顯示一列
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);
}
});
核心代碼就這么多,我們可以根據(jù)自己的需求隨意定制樣式