Android 在RecyclerView中仅选择一个单选按钮

Android 在RecyclerView中仅选择一个单选按钮,android,radio-button,android-recyclerview,Android,Radio Button,Android Recyclerview,我是android开发的新手。如何从RecyclerView中仅选择一个单选按钮。 我有一个RecyclerView和cartview布局,它是RecyclerView的单个项目。我在购物车布局中有一个单选按钮。我只想在recylerview中选择一个单选按钮。我怎样才能做到这一点 这是我的适配器代码 public class CardviewAdapterDateTimeLocation extends RecyclerView.Adapter<CardviewAdapterDateT

我是android开发的新手。如何从
RecyclerView
中仅选择一个单选按钮。 我有一个
RecyclerView
和cartview布局,它是
RecyclerView
的单个项目。我在购物车布局中有一个单选按钮。我只想在recylerview中选择一个单选按钮。我怎样才能做到这一点

这是我的适配器代码

 public class CardviewAdapterDateTimeLocation extends RecyclerView.Adapter<CardviewAdapterDateTimeLocation.ViewHolder>  {

 private Context mContext;
 public int lastCheckedPosition = 2;

 private static ArrayList<AdressAcivity_cardview_getter_setter> dataSet;
 public CardviewAdapterDateTimeLocation(ArrayList<AdressAcivity_cardview_getter_setter> os_versions) {

        dataSet = os_versions;
    }

    @Override
    public CardviewAdapterDateTimeLocation.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {

        final View itemLayoutView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.cardview_datetimelocation_activity, null);
        CardviewAdapterDateTimeLocation.ViewHolder viewHolder = new CardviewAdapterDateTimeLocation.ViewHolder(itemLayoutView);

        return viewHolder;
    }

    @Override
    public void onBindViewHolder(final CardviewAdapterDateTimeLocation.ViewHolder viewHolder, final int i) {

        AdressAcivity_cardview_getter_setter fp = dataSet.get(i);
        viewHolder.addressline1.setText(fp.getAddressline1());
        viewHolder.addressline2.setText(fp.getAddressline2());
        viewHolder.addressline3.setText(fp.getAddressline3());

        viewHolder.mRemoveButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String itemLabel = dataSet.get(i).toString();
                dataSet.remove(i);
                notifyItemRemoved(i);
                notifyItemRangeChanged(i,dataSet.size());
            }
        });
        viewHolder.editbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

            }

        });
        viewHolder.selectaddress.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
            }
        });
        viewHolder.feed = fp;
    }

    @Override
    public int getItemCount() {
        return dataSet.size();
    }

    public static class ViewHolder extends RecyclerView.ViewHolder {

        public TextView addressline1;
        public TextView addressline2;
        public TextView addressline3;
        public ImageView mRemoveButton,editbtn;
        public static RadioButton selectaddress;
        public AdressAcivity_cardview_getter_setter feed;

        public ViewHolder(View itemLayoutView) {
            super(itemLayoutView);

            addressline1=   (TextView)itemLayoutView.findViewById(R.id.datetime_gridview_addressline1) ;
            addressline2 =(TextView)itemLayoutView.findViewById(R.id.datetime_gridview_addressline2);
            addressline3= (TextView) itemLayoutView.findViewById(R.id.datetime_gridview_addressline3);
            mRemoveButton=(ImageView)itemLayoutView.findViewById(R.id.datetime_gridveiw_deletebtn);
            editbtn=(ImageView)itemLayoutView.findViewById(R.id.datetime_gridveiw_editbtn);
            selectaddress=(RadioButton)itemLayoutView.findViewById(R.id.selectaddress);

            itemLayoutView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                }
            });
        }
    }
}
公共类CardviewAdapterDateTimeLocation扩展了RecyclerView.Adapter{
私有上下文;
公共int lastCheckedPosition=2;
私有静态ArrayList数据集;
公共卡ViewAdapterDateTimeLocation(ArrayList os_版本){
数据集=os_版本;
}
@凌驾
公共卡ViewAdapterDateTimeLocation.ViewHolder onCreateViewHolder(视图组视图组,int i){
最终视图项LayoutView=LayoutFlater.from(viewGroup.getContext())。充气(R.layout.cardview\u datetimelocation\u活动,null);
CardviewAdapterDateTimeLocation.ViewHolder ViewHolder=新的CardviewAdapterDateTimeLocation.ViewHolder(itemLayoutView);
返回视图持有者;
}
@凌驾
BindViewHolder上的公共无效(最终卡片ViewAdapterDateTimeLocation.ViewHolder ViewHolder,最终int i){
地址性\卡片视图\获取者\设置者fp=dataSet.get(i);
viewHolder.addressline1.setText(fp.getAddressline1());
viewHolder.addressline2.setText(fp.getAddressline2());
viewHolder.addressline3.setText(fp.getAddressline3());
viewHolder.mRemoveButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
String itemLabel=dataSet.get(i).toString();
删除(i);
(i)删去第(i)款;
notifyItemRangeChanged(i,dataSet.size());
}
});
viewHolder.editbtn.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
}
});
viewHolder.selectaddress.setOnCheckedChangeListener(新建CompoundButton.OnCheckedChangeListener(){
@凌驾
检查更改后的公共无效(复合按钮复合按钮,布尔b){
}
});
viewHolder.feed=fp;
}
@凌驾
public int getItemCount(){
返回dataSet.size();
}
公共静态类ViewHolder扩展了RecyclerView.ViewHolder{
公共文本视图地址行1;
公共文本视图地址行2;
公共文本视图地址行3;
公共图像查看mRemoveButton,editbtn;
公共静态单选按钮选择地址;
公共地址(cardwiew)(getter)(setter)提要;;
公共视图持有者(视图项布局视图){
超级(itemLayoutView);
addressline1=(TextView)itemLayoutView.findViewById(R.id.datetime\u gridview\u addressline1);
addressline2=(TextView)itemLayoutView.findViewById(R.id.datetime\u gridview\u addressline2);
addressline3=(TextView)itemLayoutView.findViewById(R.id.datetime\u gridview\u addressline3);
mRemoveButton=(ImageView)itemLayoutView.findViewById(R.id.datetime\u GridVew\u deletebtn);
editbtn=(ImageView)itemLayoutView.findViewById(R.id.datetime\u GridVew\u editbtn);
selectaddress=(单选按钮)itemLayoutView.findViewById(R.id.selectaddress);
itemLayoutView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
}
});
}
}
}

您可以简单地尝试使用布尔b在单选按钮的onCheckedChangeListener回调中设置单选按钮的检查状态。

代码工作正常

private RadioButton lastCheckedRB=null;
...
@凌驾
BindViewHolder上的公共无效(最终CoachListHolder,最终int位置){
holder.priceRadioGroup.setOnCheckedChangeListener(新的RadioGroup.OnCheckedChangeListener(){
@凌驾
检查更改后的公共无效(RadioGroup组,int checkedId){
选中RadioButton\u rb=(RadioButton)组。findViewById(checkedId);
如果(lastCheckedRB!=null){
lastCheckedRB.setChecked(false);
}
//存储单击的单选按钮
lastCheckedRB=已检查\u rb;
}
});