RecyclerView的getItemId()值为什么是-1
时间: 2024-03-28 22:41:49 浏览: 19
RecyclerView的getItemId()方法返回的默认值为-1,这是因为RecyclerView默认使用了一个没有ID的ViewHolder,如果要获取正确的ID值,需要在Adapter中重写getItemId()方法,并返回每个条目的唯一ID值。
例如,在Adapter中添加一个id字段,并在构造器中为每个条目生成一个唯一的ID值:
```
public class MyAdapter extends RecyclerView.Adapter<MyViewHolder> {
private List<MyData> dataList;
private int idCounter = 0;
public MyAdapter(List<MyData> dataList) {
this.dataList = dataList;
for (MyData data : dataList) {
data.setId(idCounter++);
}
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// 创建ViewHolder
...
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
// 绑定ViewHolder
...
}
@Override
public long getItemId(int position) {
// 返回当前条目的ID值
return dataList.get(position).getId();
}
@Override
public int getItemCount() {
return dataList.size();
}
}
```
然后在ViewHolder中获取当前条目的ID值:
```
public class MyViewHolder extends RecyclerView.ViewHolder {
public MyViewHolder(View itemView) {
super(itemView);
// 设置点击事件
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 获取当前条目的ID值
long id = getItemId();
// 处理点击事件
}
});
}
}
```
这样就可以正确获取每个条目的ID值了。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)