
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、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)