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在系统中提供了三个默认实现:
- LinearLayoutManager 现行管理器,支持横向、纵向。
- GridLayoutManager 网格布局管理器
- StaggeredGridLayoutManager 瀑布就式布局管理器
此处重点分析一下Adapter与ViewHolder配合使用
1 RecycleView中并没有item的点击事件,ClickListener和LongClickListener需要自己实现,由外部传参,并在RecyclerView中进行调用。
2 HomeAdapter.MyViewHolder可以使用泛型
3 在HomeAdapter中,不仅重写了需要的方法,还可以额外自定义了部分其他方法,将其看作内部类的功能
4 在此基础上,还可以添加Header 和Footer
class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder>
{
public
interfaceOnItemClickLitener
{
void
onItemClick(View view,
int
position);
void
onItemLongClick(View view ,
int
position);
}
private
OnItemClickLitener mOnItemClickLitener;
public
void
setOnItemClickLitener
(OnItemClickLitener mOnItemClickLitener)
{
this
.mOnItemClickLitener = mOnItemClickLitener;
}
@Override
public
void
onBindViewHolder
(
final
MyViewHolder holder,
final
int
position)
{
holder.tv.setText(mDatas.get(position));
// 如果设置了回调,则设置点击事件
f
(mOnItemClickLitener !=
null
)
{
holder.itemView.setOnClickListener(
new
OnClickListener()
{
@Override
public
void
onClick
(View v)
{
int
pos = holder.getLayoutPosition();
mOnItemClickLitener.onItemClick(holder.itemView, pos);
}
});
holder.itemView.setOnLongClickListener
(
new
OnLongClickListener()
{
@Override
public
boolean
onLongClick
(View v)
{
int
pos = holder.getLayoutPosition();
mOnItemClickLitener.onItemLongClick(holder.itemView, pos);
return
false
;
}
});
}
}