-
設置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的大?。?/p>
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
查看全部
舉報