【问题标题】:Getting radio button value from custom list in android从android中的自定义列表中获取单选按钮值
【发布时间】:2013-02-01 06:36:52
【问题描述】:

我在每一行都有一个自定义列表视图和一个单选按钮,它可以正常工作,但我想从此代码中获取所选单选按钮的 ID。例如,当我需要选定行的 textview1 值时,我该如何收集它?提前致谢。这是我的代码:

private static class Adapter extends BaseAdapter {
         private LayoutInflater mInflater;
         private int mResourceId = 0;
         private RadioButton mSelectedRB;
         private int mSelectedPosition = -1;


         public CitizenAdapter(Context context) {
                   mInflater = LayoutInflater.from(context);
                    }
         public int getCount() {
                    return array.size();
                    }
         public Object getItem(int position) {
                        return position;
                    }
         public long getItemId(int position) {
                        return position;
                    }       
         public View getView(final int position, View convertView, ViewGroup parent) {
                final ViewHolder holder;
                    if (convertView == null) {
                        convertView = mInflater.inflate(R.layout.table_row_citizen, null);
                        holder = new ViewHolder();
                        holder.text1 = (TextView) convertView.findViewById(R.id.TextView01);
                        holder.text2 = (TextView) convertView.findViewById(R.id.TextView02);                            
                        holder.button = (RadioButton)convertView.findViewById(R.id.radioButtonCitizen);                                                     

                        convertView.setTag(holder);

                    } else {
                        holder = (ViewHolder) convertView.getTag();
                    }       
                   holder.text1.setText(array1.get(position));
                   holder.text2.setText(array2.get(position));

                   holder.button.setOnClickListener(new OnClickListener() {
                     @Override
                     public void onClick(View v) {
                         if((position != mSelectedPosition && mSelectedRB != null)){
                             mSelectedRB.setChecked(false);
                         }
                         mSelectedPosition = position;
                         mSelectedRB = (RadioButton)v;
                     }
                 });

                     if(mSelectedPosition != position){
                         holder.button.setChecked(false);
                     }else{
                         holder.button.setChecked(true);
                         if(mSelectedRB != null && holder.button!= mSelectedRB){
                             mSelectedRB = holder.button;
                         }
                     }                      
            return convertView;
           }    

             static class ViewHolder {      
                  TextView text1;
                  TextView text2;                     
                  RadioButton button;
                }               
            }

【问题讨论】:

  • 身份证?你的意思是所选单选按钮的位置?并单击单选按钮,您正在尝试获取 text1 值或 text2 值,是吗?
  • 没错,我需要获取它并在这个类之外使用它

标签: android radio-button custom-lists


【解决方案1】:

我想从此代码中获取所选单选按钮的 ID。

您必须使用 setTag & get getTag 属性来获取所选单选按钮的实际 id

holder.button.setTag(position);  

holder.button.setOnClickListener(new View.OnClickListener() {  
                public void onClick(View v) {   
                 int pos = (Integer) v.getTag();
                 Log.i("ID of radiobutton","Order Edit @ position : " + pos); 
                 String _Str1=array1.get(pos);
                 String _Str2=array2.get(pos);
                 }       
                });  

这样你就可以从你的行中得到 textview 的准确值了。

【讨论】:

    【解决方案2】:

    假设你需要在onClick方法中访问TextView

    @Override
    public void onClick(View v) {
        if((position != mSelectedPosition && mSelectedRB != null)){
            mSelectedRB.setChecked(false);
        }
        mSelectedPosition = position;
        mSelectedRB = (RadioButton)v;
        View containerView = (View)v.getParent();
        TextView textView1 = (TextView)containerView.findViewById(R.id.TextView01);
    }
    

    编辑:

    我看到您已将holder 对象声明为final。在这种情况下,您可以从事件侦听器中直接访问holder.text1holder.text2 对象。

    【讨论】:

      【解决方案3】:

      在你的按钮 onClick 中这样的代码

       int selected_radioISAwayGroup = holder.radioISAwayGroup.getCheckedRadioButtonId();
                      holder.radioISAwayButton = (RadioButton) findViewById(selected_radioISAwayGroup);
      
                      System.out.println("holder.radioISAwayButton:"+holder.radioISAwayButton.getText().toString());
                      if(holder.radioISAwayButton.getText().toString().equalsIgnoreCase("Pre"))
                      {
                          //Count +1 for presents
                      }
                      else if(holder.radioISAwayButton.getText().toString().equalsIgnoreCase("Abs"))
                      {
                          //Count +1 for Absents
                      }
                      else
                      {
                          //Count +1 for Half
                      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-22
        • 2014-02-16
        • 1970-01-01
        • 2013-08-13
        • 2012-08-04
        • 2012-06-24
        • 1970-01-01
        相关资源
        最近更新 更多