2016-04-18 2 views
0

У меня есть lisview, который содержит radioButton и 6 textView. Я хочу разрешить одновременно проверять только одну кнопку. По умолчанию переключатель первого элемента проверяется при открытии страницы. Если я выберу любой элемент, автоматически снимите отметку с ранее отмеченного элемента. Пожалуйста, помогите мне!Как проверить радиообъект только один раз за раз в Listview

код ниже:

AdapterClass:

public class AddressCustomAdapter extends BaseAdapter implements ListAdapter { 
    private final Context context; 
    private final ArrayList<AddressResult> itemsArrayList; 

    public AddressCustomAdapter(Context context, ArrayList<AddressResult> itemsArrayList) { 
     this.context = context; 
     this.itemsArrayList = itemsArrayList; 

    } 

    @Override 
    public int getCount() { 
     return itemsArrayList.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
     return itemsArrayList.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(final int position, View convertView, ViewGroup parent) { 
     View view = convertView; 
     final ViewHolder holder; 
     if (convertView == null) { 
      LayoutInflater inflater = (LayoutInflater) ((Activity)context).getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      view = inflater.inflate(R.layout.address_list,null); 
      holder = new ViewHolder(); 

      holder.addrTypeTxt = (TextView)view.findViewById(R.id.addr); 
      holder.line1Txt = (TextView)view.findViewById(R.id.addrLine1Txt); 
      holder.line2Txt = (TextView)view.findViewById(R.id.addrLine2Txt); 
      holder.areaTxt = (TextView)view.findViewById(R.id.addrAreaTxt); 
      holder.cityTxt = (TextView)view.findViewById(R.id.addrCityTxt); 
      holder.pincodeTxt = (TextView)view.findViewById(R.id.addrPincodeTxt); 
      holder.radioButton = (RadioButton) view.findViewById(R.id.radioBtn); 
      view.setTag(holder); 
     }else{ 
      holder=(ViewHolder)view.getTag(); 
     } 
     if(Utility.isNotNull(itemsArrayList.get(position).type)){ 
      holder.addrTypeTxt.setText(itemsArrayList.get(position).type); 
     }else{ 
      Utility.textViewDisable(holder.addrTypeTxt); 
     } 

     if(Utility.isNotNull(itemsArrayList.get(position).line1)){ 
      holder.line1Txt.setText(itemsArrayList.get(position).line1); 
     }else{ 
      Utility.textViewDisable(holder.line1Txt); 
     } 

     if(Utility.isNotNull(itemsArrayList.get(position).line2)){ 
      holder.line2Txt.setText(itemsArrayList.get(position).line2); 
     }else{ 
      Utility.textViewDisable(holder.line2Txt); 
     } 

     if(Utility.isNotNull(itemsArrayList.get(position).area)){ 
      holder.areaTxt.setText(itemsArrayList.get(position).area); 
     }else{ 
      Utility.textViewDisable(holder.areaTxt); 
     } 

     if(Utility.isNotNull(itemsArrayList.get(position).city)){ 
      holder.cityTxt.setText(itemsArrayList.get(position).city+"-"); 
     }else{ 
      Utility.textViewDisable(holder.cityTxt); 
     } 

     if(Utility.isNotNull(itemsArrayList.get(position).pincode)){ 
      holder.pincodeTxt.setText(itemsArrayList.get(position).pincode); 
     }else{ 
      Utility.textViewDisable(holder.pincodeTxt); 
     } 

     return view; 
    } 

    public static class ViewHolder{ 
     public TextView addrTypeTxt; 
     public TextView line1Txt; 
     public TextView line2Txt; 
     public TextView areaTxt; 
     public TextView cityTxt; 
     public TextView pincodeTxt; 
     public RadioButton radioButton; 
    } 
} 

Заранее спасибо !!!

+0

вы хотите проверить кнопку несколько радио в то же время? – kagkar

+0

Не все ли ваши радиообъективы в одной радиогруппе? Вы не указали свой файл activity.xml, но для меня кажется, что у вас есть один радиобутер для каждого элемента списка и, следовательно, каждый из них принадлежит к другой группе просмотров? Это так? –

+0

В моем xml содержится только один radioButton. Его применяли для каждого элемента – hikoo

ответ

0

Поскольку ваши радиолюбители не принадлежат к одной радиогруппе, они не работают как радиобуй, а как селектор. Он побеждает цель радиобуто, поэтому я предлагаю вам переделать проект один раз. Однако в качестве обходного пути для достижения того, что вы хотите, вы бы хотели, чтобы какой-то способ отслеживать выбранную в настоящий момент радиокассету, и как только любой другой выбран для переключения текущей выбранной кнопки

Итак, определите переменную в вашей деятельности или фрагмент под названием currentradioselected

private RadioButton currentRadioButtonSelected 

в вашем radiobuttonclick слушатель

public void onRadioButtonClicked(View view) { 
    RadioButton current = (RadioButton) view; 
    if (current.isChecked() && currentRadioSelected != null) { 
     currentRadioButtonSelected.toggle(); 
     currentRadioButtonSelected = current; 
    } else if (current.isChecked()) { 
     currentRadioButtonSelected = current; 
    } else { 
     //already selected radiobutton unchecked 
     currentRadioButtonSelected = null; 
    } 
} 

Надеется, что это помогает

Смежные вопросы