Erstellen von Buttons Dynamisch, kann ich eine auswählen und die anderen Tasten deaktivieren?

StackOverflow https://stackoverflow.com/questions/2059454

Frage

Ich erstelle Tasten dynamisch ...

for(int i=0; i<colSize;i++){
    final Button btn = new Button(this);    
    btn.setText(SectionName[i]);        
    btn.setTextSize(10);
    btn.setPadding(8, 3,8, 3);   
    btn.setTextColor(Color.WHITE);
    btn.setTypeface(Typeface.SERIF, Typeface.BOLD);

    btn.setOnClickListener(new OnClickListener() {  
        @Override
        public void onClick(View v) {               
            //***Every time that I click my button is selected !:)
            btn.setSelected(true);      
        }                   

     });  

    }

Aber wie kann ich die anderen Tasten deaktivieren, die ausgewählt wurden, ich möchte nur eine Taste ausgewählt! :)

War es hilfreich?

Lösung

Deklarieren Sie eine Variable, die die Id des angeklickten Taste speichern ::

private int EnabledButton;

gesetzt eine ID auf jeder Taste, wenn erstellt werden ::

btn.setId(i);

oder einen Tag ::

btn.setTag(i);   

dann, dass Zuhörer die „EnabledButton“ erhalten, und eine Funktion aufrufen, die anderen Tasten ::

abzuwählen
 btn.setOnClickListener(new OnClickListener() {  
        @Override
        public void onClick(View v) {                 
        EnabledButton=btn.getId();
        DeselectButtons();        
        btn.setSelected(true);      
    }                   

 });  

Die Funktion der anderen Tasten deaktivieren ::

public void DeselectButtons() {
    for(int i=0; i<NumberofButtons;i++){            
                    if (EnabledButton!= i)
        this.findViewById(i).setSelected(false);
    }           

}

Andere Tipps

  1. Die brutale Art und Weise (Arbeiten, wenn Sie einige Tasten haben) - Speichern Sie Ihre Schaltfläche Referenzen und private Methode erstellen, die Ihre Tasten und abgewählten Schleifen durch, wenn Sie nicht brauchen
  2. Erweitern Sie Ihre Schaltfläche Klasse und machen es für benutzerdefinierte Ereignis hören, die erzeugt wird, wenn eine der Schaltflächen geklickt wird
  3. Schauen Sie sich die Radiogroup Implementierung
  4. Variation von # 1. Statt der Schaffung separater Hörer für Ihre Tasten einfach erstellen und wiederverwenden es für alle Tasten. Erweitern, die Zuhörer von OnClickListener und List-Feld. Jedes Mal, wenn Sie assign Zuhörer auf die Schaltfläche Schaltfläche Hinzufügen Verweis auf diese Liste. Nun, wenn onClick ausgelöst einfach Schleife durch die Liste und deaktivieren „andere“ Tasten
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top