recyclerView实现单选
时间: 2023-12-17 18:27:43 浏览: 36
以下是在RecyclerView中实现单选的示例代码:
1. 首先,在RecyclerView的Adapter中添加一个成员变量来保存当前选中的位置:
```java
private int mSelectedPosition = -1;
```
2. 在ViewHolder的构造函数中设置itemView的点击事件,用于处理单选逻辑:
```java
public MyViewHolder(View itemView) {
super(itemView);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 获取当前点击的位置
int position = getAdapterPosition();
// 如果当前位置已经选中,则不做处理
if (position == mSelectedPosition) {
return;
}
// 取消上一个选中的状态
notifyItemChanged(mSelectedPosition);
// 设置新的选中状态
mSelectedPosition = position;
notifyItemChanged(mSelectedPosition);
}
});
}
```
3. 在Adapter的onBindViewHolder方法中根据当前位置是否选中来设置itemView的状态:
```java
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
// 设置itemView的状态
if (position == mSelectedPosition) {
holder.itemView.setSelected(true);
} else {
holder.itemView.setSelected(false);
}
// 其他操作
}
```
注意:在itemView的布局文件中需要将android:background属性设置为可选中状态,例如:
```xml
<LinearLayout
android:id="@+id/item_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground"
android:orientation="vertical">
<!-- 其他控件 -->
</LinearLayout>
```