recyclerView使用中的一些坑

1) 当增加一条item数据时,一般会调用notifyItemInsert()方法来刷新数据,这时候数据确实刷新了,但是此时你点击item会发现只有新增的条目position正确,余下的item的position的位置并没有+1,其实是因为只插入了一条,所以只重新走了oncreateViewHolder   和onBindViewHolder一次,而之前已经加载出来的数据并没有重新加载,删除数据也是同理,因此有时候写点击事件就会造成数组越界,所以当我们新增一条或删除一条或者一组数据的时候应该用notifyDataSetChange()  来确保全部重新加载,这样position的位置才会都会改变,可是这样问题又来了,当我们只要增加或者删除一条时,全部刷新明显很耗时,很不划算,因此可以在写点击事件或者在需要用的pisotion的时候,不要用传进去的position,要用viewholer.getAdapterPosition()来获取item的真正position.  记录一下

其他坑待续........

RecyclerViewAndroid平台上用于高效地显示大量数据的控件,特别适用于那些需要动态显示列表、网格等类型数据的场景。它比传统的ListView提供了更好的性能和更多的定制性。RecyclerView通过一个可回收的视图池来减少视图的创建,从而优化了内存的使用,并且可以实现垂直或水平滚动列表、网格或瀑布流等布局。 要在Android使用RecyclerView,你需要以下几个步骤: 1. 添加依赖项:在你的`build.gradle`文件添加RecyclerView的依赖库。 ```gradle implementation 'androidx.recyclerview:recyclerview:版本号' ``` 2. 布局文件添加RecyclerView:在你的布局XML文件添加RecyclerView元素。 ```xml <androidx.recyclerview.widget.RecyclerView android:id="@+id/my_recycler_view" android:layout_width="match_parent" android:layout_height="match_parent"/> ``` 3. 创建适配器(Adapter):适配器负责为RecyclerView提供数据集,并将其转换为视图。 ```java public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<Data> mData; public MyAdapter(List<Data> data) { this.mData = data; } // 创建新视图 @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.my_text_view, parent, false); return new ViewHolder(view); } // 替换内容 @Override public void onBindViewHolder(ViewHolder holder, int position) { Data data = mData.get(position); holder.textView.setText(data.getText()); } // 返回数据集大小 @Override public int getItemCount() { return mData.size(); } // 视图持有者类 public static class ViewHolder extends RecyclerView.ViewHolder { public TextView textView; public ViewHolder(View view) { super(view); textView = view.findViewById(R.id.text_view); } } } ``` 4. 在Activity或Fragment设置RecyclerView: ```java RecyclerView recyclerView = findViewById(R.id.my_recycler_view); recyclerView.setLayoutManager(new LinearLayoutManager(this)); MyAdapter adapter = new MyAdapter(dataList); recyclerView.setAdapter(adapter); ``` RecyclerView非常灵活,你可以通过定义不同的布局管理器(LayoutManager),如`LinearLayoutManager`、`GridLayoutManager`、`StaggeredGridLayoutManager`等,来实现不同类型的列表布局。此外,还可以通过添加不同的ItemDecoration和ItemAnimator来增强布局的个性化。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值