android recyclerview单选
时间: 2023-08-23 17:08:15 浏览: 40
实现 RecyclerView 单选的方法有很多种,下面我提供一种比较简单的实现方式:
1. 在 RecyclerView 的 Adapter 中添加一个选中项的变量,用于保存当前选中的位置。
```
private int mSelectedPosition = -1;
```
2. 在 ViewHolder 中添加一个方法用于设置选中状态。
```
public void setSelected(boolean isSelected) {
itemView.setSelected(isSelected);
}
```
3. 在 onBindViewHolder 方法中设置选中状态。
```
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
// 设置文本等其他内容
// 设置选中状态
holder.setSelected(position == mSelectedPosition);
// 设置监听器
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 更新选中项的位置
int previousSelectedPosition = mSelectedPosition;
mSelectedPosition = holder.getAdapterPosition();
// 更新之前选中项的状态
notifyItemChanged(previousSelectedPosition);
// 更新当前选中项的状态
notifyItemChanged(mSelectedPosition);
}
});
}
```
上述代码中,当用户点击某个 item 时,先更新选中项的位置,然后通过 notifyItemChanged 方法更新之前选中项和当前选中项的状态,从而实现单选功能。
另外,如果要实现只允许选中一个 item,还需要在 Adapter 中添加一个方法用于清除选中状态。
```
public void clearSelection() {
int previousSelectedPosition = mSelectedPosition;
mSelectedPosition = -1;
notifyItemChanged(previousSelectedPosition);
}
```
这个方法可以在 RecyclerView 外部调用,比如当用户需要取消选中时,可以调用该方法清除选中状态。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![.zip](https://img-home.csdnimg.cn/images/20210720083646.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)