recycleView holder.getAdapterPosition() 经常返回-1,为什么
时间: 2024-05-05 19:22:06 浏览: 22
RecyclerView 中的 ViewHolder 可能会返回 -1 的情况有可能是由于 RecyclerView 还未完成数据绑定的原因,此时 ViewHolder 的位置还未被确定,因此会返回 -1。
为了避免出现这种情况,可以在使用 `holder.getAdapterPosition()` 之前先判断一下当前 ViewHolder 是否已经与 RecyclerView 绑定,例如:
```
if(holder.getAdapterPosition() != RecyclerView.NO_POSITION) {
// 进行相关操作
}
```
另外,如果在 RecyclerView 中使用了局部刷新的方法进行数据更新,也可能会出现 ViewHolder 返回 -1 的情况。此时可以尝试使用 `holder.getLayoutPosition()` 来获取当前 ViewHolder 的位置。
相关问题
解释如下代码:allAdapter = new AllAdapter(this, mlist); top_recycleview.setLayoutManager(new LinearLayoutManager(this)); top_recycleview.setAdapter(allAdapter); top_recycleview.setLoadingMoreEnabled(false); top_recycleview.setPullRefreshEnabled(true); top_recycleview.setLoadingMoreProgressStyle(ProgressStyle.BallSpinFadeLoader);
这段代码主要是对 RecyclerView 进行了一些设置和初始化操作。下面对每行代码进行解释:
- 第一行代码创建了一个名为 `allAdapter` 的 AllAdapter 对象,并传入当前活动(this)和名为 `mlist` 的列表作为参数。这个适配器将用于为 RecyclerView 提供数据和布局。
- 第三行代码设置了 RecyclerView 的布局管理器,使用 LinearLayoutManager 来管理 item 的布局。这里的参数 `this` 表示当前活动是其上下文。
- 第四行代码设置了 RecyclerView 的适配器为 `allAdapter`,这样 RecyclerView 就能够使用 `allAdapter` 提供的数据和布局来显示列表项。
- 第五行代码禁用了 RecyclerView 的加载更多功能,即不允许加载更多数据。
- 第六行代码启用了 RecyclerView 的下拉刷新功能,允许用户通过下拉列表刷新数据。
- 第七行代码设置了 RecyclerView 下拉刷新时显示的加载进度样式,这里使用了 ProgressStyle.BallSpinFadeLoader 样式。
通过以上设置,RecyclerView 将会使用指定的布局管理器、适配器和加载进度样式来展示数据,并且允许用户下拉刷新数据。
binding.recycleView.setLayoutManager(linearLayoutManager);
这段代码使用了 RecyclerView 控件,并将其布局管理器设置为 LinearLayoutManager,用于控制 RecyclerView 中的子项如何排列和显示。其中,binding 是视图绑定库生成的一个类,可以通过它来访问布局中的控件。如果你想要使用 RecyclerView 来展示列表数据,就需要先设置其布局管理器。例如,LinearLayoutManager 会在垂直或水平方向上排列子项,GridLayoutManager 则会在网格状布局中排列子项等等。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)