设置RecyclerView 的间隔代码示例
RecyclerView.addItemDecoration(new RecyclerView.ItemDecoration(){
@override
public void getItemOffsets(Rect outRect,View view , RecyclerView parent, RecyclerView.State state){
GridLayoutManager.LayoutParams lp = (GridLayoutManager.LayoutParams) view.getLayoutParams();
int spanSize = lp.getSpanSize();
int spanIndex = lp.getSpanIndex();
outRect.top = 20;
if(spanSize != gridLayoutManager.getSpanCount()){
if(spanIndex ==1){ outRect.left = 10;}else{ outRect.right=10;}
}
}
});
GridLayoutManager.SpanSizeLookup的getSpanSize(int position)方法根据position 配个 RecyclerView的Adapter的getItemViewType(position)方法得到对应position的View类型,进而决定返回该View所应占用的SpanSize的大小:
public int getSpanSize(int position){
int type = mRecyclerView.getAdapter().getItemViewType(position);
if(type ==DataModel.TYPE_THREE){ return gridLayoutManager.getSpanCount();}
else { return 1;}
}
GridLayoutManager中的setSpanSizeLookup(GridLayoutManager.SpanSizeLookup)方法可以根据position返回每个Item占用几个Span;GridLayoutManager.SpanSizeLookup.getSpanSize(int position)
GridLayoutManager示例实现Grid与List混排
笔记见截图
recyclerView = (RecyclerView) findViewById(R.id.my_rv); GridLayoutManager manager = new GridLayoutManager(this, 6); manager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Override public int getSpanSize(int position) { if (position < 7 || position > 14) { return 3; } return 2; } }); recyclerView.setLayoutManager(manager); adapter = new MyAdapter(this); recyclerView.setAdapter(adapter);作者:Android_小生链接:https://www.jianshu.com/p/29465cce1131來源:简书简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。