RecyclerView (回收、复用、高度解耦),能实现比ListView、GridView更丰富的效果
使用步骤:
使用步骤:
Step1 : 布局中添加RecyclerView
Step2 : 获取RecyclerView实例
Step3 : 设置布局管理器(控制显示的方式:LinearLayoutManager、GridLayoutManager、StaggeredGridLayoutManager)
Step4 : 设置数据Adapter
Step5 : 添加Item添加、删除动画(setItemAnimator)
Step6 : 添加分割线(addItemDecoration)
Step7 : 添加监听事件(onClick等,可直接再onBindViewHolder中直接添加)
Step4 : 自定义Adapter:
/**
* 继承RecyclerView.Adapter
* 1.重写onCreateViewHolder()返回ItemViewHolder
* 2.重新onBindViewHolder()绑定数据
* 3.重写getItemCount()返回记录个数
* 4.自定义ItemViewHolder继承ViewHolder
*
* @see 如果需要为RecylerView添加Header或者Footer,需要额外处理以下细节:
* 1.重写getItemViewType()方法,用于区分Item类型
* 2.onCreateViewHolder()、onBindViewHolder()需要区分处理
* 3.getItemCount()返回srcDatas.size()+headerCount + footerCount
*
* @author 健身小码哥
*
*/
public class CustomAdapter extends RecyclerView.Adapter<DataAdapter.CustomViewHolder>
{
@Override
public CustomViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
CustomViewHolder holder = new CustomViewHolder(LayoutInflater.from(context).
inflate(R.layout.item, parent,
false));
return holder;
}
@Override
public void onBindViewHolder(CustomViewHolder holder, int position)
{
holder.titleTv.setText(mDatas.get(position));
holder.headImg.setImageResource(R.drawable.head);
}
@Override
public int getItemCount()
{
return mDatas.size();
}
class CustomViewHolder extends ViewHolder
{
TextView titleTv;
ImageView headImg;
public MyViewHolder(View view)
{
super(view);
titleTv = (TextView) view.findViewById(R.id.title);
headImg = (ImageView) view.findViewById(R.id.img_head)
}
}
}
Step5 : 添加Item添加删除效果(addItemDecoration)
* 可以参考 RecyclerViewItemAnimators , 提供了丰富的效果。
Step6 : 自定义分割线* 继承ItemDecoration,并根据布局的特点进行重写 (系统暂时未提供默认的实现类)
* 可参考 ItemDecoration的几种实现