RecyclerView是Google在API 21下support.V7包里的控件,相对于ListView或GridView,灵活度更高
RecyclerView的布局方式
LinearLayoutManager:线性布局,横向或者纵向滑动列表
GridLayoutManager:表格布局
StaggeredGridLayoutManager:流式布局
RecycleView的高度展开 在RecycleView
@Override
protected void onMeasure(intwidthMeasureSpec,intheightMeasureSpec) {
intexpandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2,MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
RecycleView高度展开并被其他同向可滑动布局嵌套时,可设置让其可惯性滑动
rv.setNestedScrollingEnabled(false);
如果确定每个item高度都是固定的时,可以使用以下属性提高性能
rv.setHasFixedSize(true);
横向的ListView
mLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
默认动画效果
rv.setItemAnimator(newDefaultItemAnimator());
RecycleView添加分割线
//一般实现方式
rv.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.HORIZONTAL_LIST));
//也可以通过在item添加一个在底部的View实现
添加多种布局 下面举个栗子,要实现更多布局也只需要加个参数判断就可以了
//在RecycleView的Adapter中可以通过实现getItemViewType方法
@Override
public int getItemViewType(int position) {
if(mHeadView == null) return TYPE_NORMAL;
if(position == 0) return TYPE_HEADER;
return TYPE_NORMAL;
}
//然后可以在onCreateViewHolder中根据viewType启用不同布局
@Override
public MineHolder onCreateViewHolder(ViewGroup parent, int viewType) {
if(viewType == TYPE_HEADER){
return new HeadViewHolder(mHeadView);
}else{
return new ItemViewHolder(mItemView);
}
return holder;
}
//最后在onBindViewHolder实现你对每个布局的操作
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
if(holder instanceof HeadViewHolder){
//对头布局的操作
...
}else{
//对Item操作
...
}
}
本人Android小白一枚,如有错误,望指正
网友评论