android recyclerview 单选
时间: 2023-08-23 12:07:56 浏览: 52
对于在 Android 中实现 RecyclerView 单选功能,可以按照以下步骤进行操作:
1. 首先,你的 RecyclerView.Adapter 中,为每个数据项添加一个额外的标志来表示是否被选中。可以使用一个布尔类型的变量或者其他任何适合的方式。
2. 在 RecyclerView.ViewHolder 中,为列表项的根布局添加一个点击事件监听器,用于处理单击事件。
3. 在点击事件监听器中,更新当前列表项的选中状态,并刷新列表。
4. 在 onBindViewHolder() 方法中,根据每个列表项的选中状态来设置相应的样式或者显示效果。
下面是一个简单的示例代码:
```java
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<Item> itemList;
private int selectedItem = -1;
public MyAdapter(List<Item> itemList) {
this.itemList = itemList;
}
public class ViewHolder extends RecyclerView.ViewHolder {
public TextView textView;
public ViewHolder(View itemView) {
super(itemView);
textView = itemView.findViewById(R.id.textView);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION) {
selectedItem = position;
notifyDataSetChanged();
}
}
});
}
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Item item = itemList.get(position);
holder.textView.setText(item.getText());
if (selectedItem == position) {
holder.itemView.setBackgroundColor(Color.YELLOW);
} else {
holder.itemView.setBackgroundColor(Color.WHITE);
}
}
@Override
public int getItemCount() {
return itemList.size();
}
}
```
在这个示例中,将列表项的选中状态存储在 `selectedItem` 变量中,点击列表项时更新该变量的值,并调用 `notifyDataSetChanged()` 方法刷新列表。在 `onBindViewHolder()` 方法中,根据选中状态设置相应的样式。
希望这个示例能帮到你!