如何实现让RecyclerView有不同尺寸的item

如何实现让RecyclerView有不同尺寸的item,第1张

package tvlesportscommyrecyclerview;

import androidappActivity;

import androidosBundle;

import androidsupportv7widgetDefaultItemAnimator;

import androidsupportv7widgetGridLayoutManager;

import androidsupportv7widgetLinearLayoutManager;

import androidsupportv7widgetRecyclerView;

import androidsupportv7widgetStaggeredGridLayoutManager;

import androidviewView;

import javautilArrayList;

/

Created by liuyu8 on 2016/5/3

/

public class RecyclerViewActivity extends Activity {

private RecyclerView mRecyclerView;

private HomeAdapter mAdapter;

private ArrayList<SearchResultBean> mDataList;

@Override

protected void onCreate(Bundle savedInstanceState) {

superonCreate(savedInstanceState);

setContentView(Rlayoutrecyclerview_layout);

initData();

mRecyclerView = (RecyclerView) findViewById(Ridid_recyclerview);

GridLayoutManager manager = new GridLayoutManager(this, 4);

managersetSpanSizeLookup(new GridLayoutManagerSpanSizeLookup() {

@Override

public int getSpanSize(int position) {

SearchResultBean bean = mDataListget(position);

if (beangetType() == 0) {

return 4;

} else if(beangetType() == 1){

return 2;

}else{

return 1;

}

}

});

mRecyclerViewsetLayoutManager(manager);

mRecyclerViewsetItemAnimator(new DefaultItemAnimator());

mAdapter = new HomeAdapter(this, mDataList);

mRecyclerViewsetAdapter(mAdapter);

}

protected void initData() {

mDataList = new ArrayList<SearchResultBean>();

for (int i = 0; i < 50; i++) {

SearchResultBean bean = new SearchResultBean();

beansetName(i + "");

if (i == 0) {

beansetType(0);

} else if (i > 0 && i <= 5) {

beansetType(1);

} else {

beansetType(2);

}

mDataListadd(bean);

}

}

}

上面代码中,RecyclerView的方向是垂直的,它由通过一个TotalspanSize为4的GridLayout实现的,getSpanSize方法中有一个参数是position,我们可以等价的通过LinearLayout中weight来理解该方法,假设Recycler是一个线性布局,TotalSpan等同于总的weight值,getSpanSize(int position)代表的是位置为position的item宽度占RecyclerView总宽度的weight值。

上面代码的意思等同于:

(1)position = 0 的item的weight值为4,所以position等于0的item宽等于RecyclerView的宽度

(2)position范围在(0,5]的item的weight值为2,所以position范围在(0,5]的item的宽度为RecyclerView宽度的1/2

(3)position(5,50)的item的weight值为1,所以position范围在(5,50)的item的宽度为RecyclerView宽度的1/4

注明:忽略item之间的padding值。

项目地址: >

以上就是关于如何实现让RecyclerView有不同尺寸的item全部的内容,包括:如何实现让RecyclerView有不同尺寸的item、XRecyclerView、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10136298.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存