新建 java class
public class xxxAdapter extends RecyclerView.Adapter<xxxAdapter.LocalViewHolder> {
}
//xxxAdapter继承RecyclerView.Adapter
然后一路alt+回车,插入,将报错消除,出现了以下四个方法
1.LocalViewHolder(本地视图持有者) 继承于 RecyclerView.ViewHolder(回收视图的视图持有者)
注::视图持有者就是指 一个视图对应一个持有者
public class LocalViewHolder extends RecyclerView.ViewHolder {
//这里声明
public LocalViewHolder(@NonNull View itemView) {
super(itemView);
//这里绑定控件
}
}
2.创建 LocalViewHolder(本地视图持有者)
@NonNull
@Override
public LocalViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new LocalViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.adapter_file,parent,false));
/*设置布局文件*/
}
//此方法名看上去像onCreate生命周期,用于一开始的创建视图
//实际只会创建一个半屏幕的视图
//(如:一个屏幕能显示10个视图,就生成15个视图,对应15个视图持有者;原因:第16个视图会复用第1个的视图)
//参数 parent:视图组(布局文件) viewType:视图类型(可以通过判断视图类型使用不同的视图组)
//还可以增加一个参数:List payloads,使用notifyItemChanged()刷新数据时可传入一个值给payloads,可以进行判断处理
//如:payloads.get(0) == ""||payloads.isEmpty()
//刷新数据可用于更新,也可用于复原(如:点击后此视图出现变化,点击另一个视图时,此视图复原)
2.绑定 LocalViewHolder(本地视图持有者)
@Override
public void onBindViewHolder(@NonNull LocalViewHolder holder, int position) {
}
//创建视图时,以及复用视图时都会运行此方法
//参数 holder:视图的持有者 position:当前视图的位置
//两个参数配合,给指定视图进行设置
3.得到 项目计数:其实就是设置要用视图去显示的对象的数量
@Override
public int getItemCount() {
return 0;
}
在activity里使用回收视图
private RecyclerView mFileRv;//声明回收视图
private FileAdapter pFileAdapter;//声明回收视图的适配器
private void onInitialView() {
mFileRv = findViewById(R.id.rv_file);/*绑定控件*/
mFileRv.setAdapter(pFileAdapter);/*设置适配器*/
mFileRv.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));/*设置布局管理器*/
//LinearLayoutManager:线性布局管理器
//GridLayoutManager:网格布局管理器
//StaggeredGridLayoutManager:瀑布流布局管理器
mFileRv.setItemAnimator(new DefaultItemAnimator());/*设置视图的添加和移除动画*/
mFileRv.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.HORIZONTAL));/*添加分割线*/
}
刷新
notifyDataSetChanged();// 全部刷新
notifyItemChanged(int position);// 局部刷新
notifyItemRangeChanged(int positionStart, int itemCount);// 刷新次数
notifyItemInserted(int position);// 插入并刷新(有动画)
notifyItemMoved(int fromPosition, int toPosition);// 刷新范围
notifyItemRemoved(int position);// 删除并刷新(有动画)
notifyItemRangeRemoved(int positionStart, int itemCount);// 批量删除并刷新
转载:https://blog.csdn.net/qq_34411066/article/details/105924561
查看评论