2016-12-22 2 views
0

Ich habe Zeilen in meiner Listenansicht. In jeder Zeile habe ich zwei Radiobuttons, beide in derselben Radiogruppe.Wählen Sie ein Optionsfeld aus jeder Zeile einer Listenansicht aus einer Radiogruppe

Die Optionsfelder heißen "Voll" und "Teilweise". Ich möchte nur eine "Teilweise" in allen Zeilen in meiner Listenansicht auswählen und alle Bedürfnisse auf "Voll" setzen.

Wenn also ein Benutzer "Teilweise" auf einem auswählt und ein zuvor markierter Radioknopf als "teilweise" markiert ist, sollte er auf "Voll" wechseln. Hier hatte ich es versucht, aber nicht die gewünschte Ausgabe bekommen, wie ich will.

holder.radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() 
      { 
       @Override 
       public void onCheckedChanged(RadioGroup radioGroup, int i) 
       { 
        if(i==R.id.radio_partial_selection) 
        { 
         if (selected != null) 
         { 
          selected.setChecked(false); 
         } 
         holder.radioButton_partial.setChecked(true); 
         Log.d("selected=","11"+selected); 
         selected = holder.radioButton_partial; 
         Log.d("selected=","22"+selected); 
        } 
        if(i==R.id.radio_full_selection) 
        { 

        } 

       } 
      }); 

Antwort

0

Außerhalb Ihres onCheckedListener würde ich einen booleschen Wert festlegen, der geschaltet wird, wenn einer der Teilschaltflächen aktiviert ist. Überprüfen Sie dann, ob der partielle Schalter ausgelöst wurde. Wenn dies der Fall ist, wird in der Ansicht anstelle der Teilschaltfläche die Schaltfläche "Voll" angezeigt.

Während ich Radioknöpfe nicht kenne (ich habe sie nicht auf Android benutzt), wenn ich kann, kann ich ein bisschen Beispielcode für Sie zusammenstellen.

bearbeiten (Gestellt Beispielcode)

In Ihrer speziellen Situation, das ist, wie ich das Problem umgehen würde. Wie in den Kommentaren erwähnt, gibt es ein paar Annahmen gemacht (da ich Ihren Code nicht hatte)

public class sampleRadioButtonActivity extends Activity { 
    /** 
    * When this is set to false, all radio buttons will show partial. 
    * When this is set to true, all radio buttons will show full, except the one that is 
    * set to show partial 
    */ 
    private boolean showPartialOrFull; 

    @Override 
    public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     /** 
     * Do your on create stuff here 
     */ 
     /** 
     * We are setting the showPartialOrFull here to be false, 
     * this will allow the view to show partial or full for now 
     */ 
     showPartialOrFull = false; 
     holder.radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(RadioGroup group, int checkedId) { 
       if(checkedId == R.id.radio_partial_selection){ 
        showPartialOrFull = true; 
        changeRadioButtonToFull(holder); 
       } 
      } 
     }); 
    } 

    /** 
    * Because I'm missing some code, assumptions are made here. 
    * The first assumption is that the radio buttons are sitting in a viewgroup. 
    * The second assumption, is more a recommendation, that you put the radiobuttons 
    * in a ViewFlipper or ViewSwitcher (I will be using the first). 
    */ 
    private final void changeRadioButtonToFull(View viewToIgnore){ 
     for(int i = 0; i < viewGroup.getChildCount(); i++){ 
      View child = viewGroup.getChildAt(i); 
      if(child != viewToIgnore){ 
       ((ViewFlipper) child).setDisplayedChild(R.id.radio_full_selection); 
      } 
     } 
    } 
+0

Können Sie einige Beispielcode – gautam

Verwandte Themen