Android RecycleView 应用

来源:互联网 发布:java官网下载旧版jdk 编辑:程序博客网 时间:2024/06/04 23:30

RecycleView  的使用

1:设置布局管理器
mRecycle.setLayoutManager(layout)
2:设置数据Adapter
mRecycle.setAdapter();
3:设置Item增加、移除动画
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
4:添加分割线
mRecyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.HORIZONTAL_LIST));


在具体应用场景中,较为重要的是

LayoutManager;Adapter;ViewHolder三类

LayoutManager在系统中提供了三个默认实现:
  1. LinearLayoutManager 现行管理器,支持横向、纵向。
  2. GridLayoutManager 网格布局管理器
  3. StaggeredGridLayoutManager 瀑布就式布局管理器
具体系统实现不在此处赘述了

此处重点分析一下Adapter与ViewHolder配合使用
1 RecycleView中并没有item的点击事件,ClickListener和LongClickListener需要自己实现,由外部传参,并在RecyclerView中进行调用。
2 HomeAdapter.MyViewHolder可以使用泛型
3    在HomeAdapter中,不仅重写了需要的方法,还可以额外自定义了部分其他方法,将其看作内部类的功能
4      在此基础上,还可以添加Header 和Footer
class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder>
{
publicinterfaceOnItemClickLitener
{
void onItemClick(View view, int position);
void onItemLongClick(View view , int position);
}
private OnItemClickLitener mOnItemClickLitener;
publicvoidsetOnItemClickLitener(OnItemClickLitener mOnItemClickLitener)
{
this.mOnItemClickLitener = mOnItemClickLitener;
}
@Override
publicvoidonBindViewHolder(final MyViewHolder holder, finalint position)
{
holder.tv.setText(mDatas.get(position));
// 如果设置了回调,则设置点击事件
f (mOnItemClickLitener != null)
{
holder.itemView.setOnClickListener(new OnClickListener()
{
@Override
publicvoidonClick(View v)
{
int pos = holder.getLayoutPosition();
mOnItemClickLitener.onItemClick(holder.itemView, pos);
}
});
holder.itemView.setOnLongClickListener(new OnLongClickListener()
{
@Override
publicbooleanonLongClick(View v)
{
int pos = holder.getLayoutPosition();
mOnItemClickLitener.onItemLongClick(holder.itemView, pos);
returnfalse;
}
});
}
}

原创粉丝点击