📅  最后修改于: 2023-12-03 14:54:03.363000             🧑  作者: Mango
在 Android 应用程序中,RecyclerView 是最常用的控件之一。而我们经常需要在 RecyclerView 上添加一些控件,比如单选按钮。下面将介绍如何在 RecyclerView 上带有单选按钮。
我们可以在 RecyclerView 的 ViewHolder 中添加一个 CheckBox 控件,用于表示单选按钮。当选中其中一个 CheckBox 后,其他的 CheckBox 将会全部被取消选中。以下是代码片段:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
private List<String> mDataList;
private int mSelectedPosition = -1;
public MyAdapter(List<String> dataList) {
this.mDataList = dataList;
}
public int getSelectedPosition(){
return mSelectedPosition;
}
public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
public CheckBox mCheckBox;
public MyViewHolder(View view) {
super(view);
mCheckBox = (CheckBox) view.findViewById(R.id.check_box);
mCheckBox.setOnClickListener(this);
}
@Override
public void onClick(View view) {
mSelectedPosition = getAdapterPosition();
notifyDataSetChanged();
}
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.mCheckBox.setChecked(mSelectedPosition == position);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mSelectedPosition = position;
notifyDataSetChanged();
}
});
}
@Override
public int getItemCount() {
return mDataList.size();
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false);
return new MyViewHolder(view);
}
}
在上述代码中,我们通过继承 RecyclerView.Adapter 来实现我们自己的适配器,然后再通过 RecyclerView 的 setAdapter 方法把适配器和 RecyclerView 关联起来。其中的 mSelectedPosition 变量用于记录选中的位置。
在 ViewHolder 中,我们添加了一个 CheckBox 控件,并为其设置了 onClickListener 监听器,在单选按钮被选中时,我们记录了当前的位置并调用 notifyDataSetChanged 方法来更新数据。
在 onBindViewHolder 方法中,我们为 ViewHolder 的 itemView 设置了一个 onClickListener 监听器,响应用户的点击事件,记录了点击位置,并调用 notifyDataSetChanged 方法来更新数据。
最后,onCreateViewHolder 方法用于创建 ViewHolder 的实例,并设置布局。
通过此文章的介绍,我们可以在 RecyclerView 中添加单选按钮,以便用户进行选择操作,从而实现更好的用户交互体验。