当前位置: 首页 > 知识库问答 >
问题:

回收器视图中的单选收音机按钮(副本)

姬银龙
2023-03-14

我有一个包含单选按钮的回收器视图。

现在我只想从列表中选择一个单选按钮并获得它的值

下面我附上了截图。

回收器视图的截图

下面是我到目前为止尝试的链接。

http://www.zoftino.com/android-recycerview-radiobutton

在回收视图中仅选择一个radiobutton

如何只选择一个RadioButton与RecolyerView Android?

从RecyclerView内部的RadioGroup获取以前的RadioButton值

在android中使用recyclerview单选按钮

但什么都没出来。

public class FilterValRecyclerAdapter extends 
RecyclerView.Adapter<FilterValRecyclerAdapter.ValueViewHolder> {
    private final FragmentActivity context;
    private final ArrayList<FilterDefaultMultipleListModel> filterModels;
    private FilterDefaultMultipleListModel filterDefaultMultipleListModel;
    private final int resource;
    private final int type;
    OnItemClickListener mItemClickListener;
    private RadioButton lastCheckedRB = null;
    private int rbPosoition =0;
    private int mSelectedItem = -1;

    public FilterValRecyclerAdapter(FragmentActivity context, int 
   filter_list_item_layout,ArrayList<FilterDefaultMultipleListModel> 
   filterModels int type) {
    this.context = context;
    this.filterModels = filterModels;
    this.resource = filter_list_item_layout;
    this.type = type;
  }

@Override
public ValueViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View v = LayoutInflater.from(this.context)
            .inflate(resource, viewGroup, false);
    return new ValueViewHolder(v,this.type);
}

@Override
public void onBindViewHolder(final ValueViewHolder viewHolder, final int 
position) {

    if(type==2){
        viewHolder.rdgCategoryItems.setVisibility(View.VISIBLE);
        viewHolder.rdCategoryItem.setVisibility(View.VISIBLE);
        viewHolder.cbSelected.setVisibility(View.GONE);

   viewHolder.subCategoryName.setText(filterModels.get(position).getName());


        viewHolder.rdCategoryItem.setChecked(position == mSelectedItem);



    }else{
        viewHolder.rdgCategoryItems.setVisibility(View.GONE);
        viewHolder.rdCategoryItem.setVisibility(View.GONE);
        viewHolder.cbSelected.setVisibility(View.VISIBLE);

   viewHolder.subCategoryName.setText(filterModels.get(position).getName());

   viewHolder.cbSelected.setChecked(filterModels.get(position).isChecked());
       }

   }

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

public void setItemSelected(int position) {
    if (position != -1) {
   filterModels.get(position).setChecked
    (!filterModels.get(position).isChecked());
        notifyDataSetChanged();
    }
 }


public interface OnItemClickListener {

    void onItemClick(View view, int position);
}

public void setOnItemClickListener(final OnItemClickListener 
 mItemClickListener) {
    this.mItemClickListener = mItemClickListener;
 }

public class ValueViewHolder extends RecyclerView.ViewHolder implements
        View.OnClickListener {

    TextView subCategoryName;
    CheckBox cbSelected;
    RadioButton rdCategoryItem;
    RadioGroup rdgCategoryItems;
    View colorView;
    public int type;

    ValueViewHolder(View itemView, int type) {
        super(itemView);
        itemView.setOnClickListener(this);
        subCategoryName = (TextView) 
        itemView.findViewById(R.id.txt_item_list_title);
        cbSelected = (CheckBox) itemView.findViewById(R.id.cbSelected);
        rdCategoryItem = (RadioButton) 
        itemView.findViewById(R.id.rdCategoty);
        rdgCategoryItems = (RadioGroup) 
        itemView.findViewById(R.id.rdgCategory);
        colorView = itemView.findViewById(R.id.colored_bar);
        this.type = type;


    }

    @Override
    public void onClick(View v) {
        if (mItemClickListener != null) {
            mItemClickListener.onItemClick(v, getPosition());


        }
      }
   }
  }

提前道谢。

共有1个答案

常永怡
2023-03-14

OnBindViewHolder()方法中添加OnCheckedChnageListener()并在OnCheckedChnageListener()中维护MSelectedItem

 viewHolder.rdCategoryItem.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
             mSelectedItem=position;
             notifyDataSetChanged();
            }
        });
 类似资料:
  • 单选按钮通常表示组中用户可用的许多可选按钮之一。 每个按钮,wx.RadioButton类的对象在圆形按钮旁边都有一个文本标签。 为了创建一组可相互选择的按钮,第一个wxRadioButton对象的style参数设置为wx.RB_GROUP。 后续按钮对象将添加到组中。 wxPython API也包含wx.RadioBox类。 它的对象为组提供边框和标签。 组中的按钮可以水平或垂直排列。 wx.R

  • 我使用以下代码来处理行点击。(来源) 然而,如果我想在每一行上都有一个删除按钮,这是可行的。我不知道如何用这个实现这一点。 我附加了OnClick侦听器来删除按钮,它可以工作(删除该行),但它也会在整行上触发onClick。 如果单击一个按钮,有谁能帮我避免整行单击吗。 谢谢。

  • 在init2()中标识按钮Id的行上,我得到响应“尝试对空对象引用调用虚拟方法'Android.content.pm.applicationInfo Android.content.context.GetApplicationInfo()'”;

  • 编辑:我的问题是ListView有没有比RecyclerView更有优势的地方?如果不是,那么为什么谷歌没有将它标记为贬值。此外,虽然我们可以在库中找到ListView,但如果我们创建了一个新的Project,但要使用RecyclerView,则必须使用另一个依赖项。

  • 在其他回收器视图中有一个回收器视图。两者都需要垂直滚动。外部回收器视图滚动正常,但内部回收器视图滚动不正常。 这是代码: ViewAdapter如下: 我尝试了以下两种回收商观点,但都无法解决问题 也尝试了这个:

  • 如何从3个按钮中选择只有1个按钮?我设法设置/取消设置所选按钮的背景色。但无法选择唯一一个选定的按钮。 示例btn1、btn2、btn3。当我选择btn1时,btn1背景颜色发生变化,btn2和btn3不受影响。之后,当我再次选择btn2时,btn1背景色未设置,btn2背景色更改。因此此时选择btn2而不选择btn1和btn3。 下面是我的示例代码: