-
设置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混排
查看全部 -
调试布局的时候,在开发者选项中可以打开显示布局边界
查看全部 -
多种ViewHolder创建使用示例
查看全部 -
配合三种Item布局,创建三种ViewHolder
查看全部 -
技能点:TextView中用tools:text="",指定的text属性值,在布局预览中可以看到,但是在程序运行时是看不到的,达到预览的效果
查看全部 -
创建三种类型的ItemView布局
查看全部 -
RecyclerView 的Adapter中的getItemViewType(int position)代码示例
查看全部 -
重点:
分配好getItemViewType(int position)中的Type;
type只需要时一个数字即可,不一定是连续的,但必须是唯一的
查看全部 -
与ListView的区别
查看全部 -
RecyclerView.Recycler:
多个RecyclerView共用一个RecycleredPool,
RecycleredPool为RecyclerView的静态成员变量
配置缓存Size
查看全部 -
RecyclerView.Recycler:
RecyclerView通过内部类Recycler中的Map缓存了Holder
查看全部 -
RecyclerView.Holder 在RecycleView中保存View,包装了View;
与ListView不同,ListView的cache中保存的是View,而RecyclerView的cache中保存的Holder,在Holder中包装了一个View;
Holder中保存着Type,Position,是否需要被缓存的Flag标志等信息
查看全部 -
getItemType:
遍历缓存中的Holder,如果Type与所需要的一致就返回Holder
查看全部
举报