RecyclerView
1.RecyclerView的使用步骤
①添加依赖(implementation 'com.android.support:recyclerview-v7:29.0.2')
②创建布局(宽、高必须充满)
③找控件
④设置布局管理器(线性布局,网格布局和瀑布流)
⑤获取数据(切换子线程的方法)
⑥创建适配器——重写三个方法,通过接口回调实现点击事件
⑦设置适配器
布局管理器
//线性布局
rv.setLayoutManager(new LinearLayoutManager(this));
//网格布局
rv.setLayoutManager(new GridLayoutManager(this, 3));
//瀑布流
rv.setLayoutManager(new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL));
接口回调
1.概述
类A调用类B的方法b(),类B在回调类A的方法a(),期中方法a()是定义在接口中的,由类A来实现,这是一个双向调用的过程。
2.步骤:
①在adapter定义一个内部接口,内部接口定义一个方法,方法参数是我们需要返回值的
②在adapter中定义接口变量,并设置set方法
③在onBindViewHolder
中,给条目做一个点击事件
④在fragment或activity中,使用adapter对象调用点击事件
//定义接口
public interface OnItemClickListener{
void onItemClick(int position);
}
//设置传递接口类实现对象的方法
private OnItemClickListener onItemClickListener;
public void setOnItemClickListener(OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
//条目的监听事件
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onItemClickListener.onItemClick(position);
}
});
2.RecyclerView多布局(banner+recycleview)
①RecyclerView基本使用
②定义类型常量
③重写获取条目根据位置分类的方法(getItemViewType)
④重写onCreateViewHolder
,根据类型创建不同的布局
⑤重写onBindViewHolder
,根据不同类型加载不同数据
3.RecyclerView多布局(奇数位左图右文字+偶数位左文字右图)
①RecyclerView基本使用
②定义类型常量
③重写方法getItemViewType
,根据位置返回不同类型
④重写onCreateViewHolder
,根据类型创建不同的布局
⑤重写onBindViewHolder
,根据不同类型加载不同数据
4.RecyclerView添加刷新
①添加依赖
②在布局中添加刷新的控件并找控件
③给刷新控件加载更多、下拉刷新添加监听,监听中写具体代码
④刷新完列表,关闭SmartRefreshLayout头和脚
5.RecyclerView与ListView的对比
RecyclerView与ListView不同点
ListView:
① 继承BaseAdapter
,需要重写四个方法
②自定义ViewHolder
与convertView
的优化(判断是否为null);
③可以直接使用item的点击事件
④不用单独设置分隔线
⑤不可以定向刷新某一条数据
RecyclerView:
① 继承RecyclerView.Adapter
与RecyclerView.ViewHolder
②必须使用viewholder
,封装了view的复用
③设置LayoutManager
,以及layout的布局效果
④点击事件可以使用给控件设置点击事件,也可以自定义点击事件
⑤可以自定义绘制分隔线
⑥可以定向刷新某一条数据notifyItemChanged
等方法
⑦可以自定义item删除增加的动画效果