Erstellen von Buttons Dynamisch, kann ich eine auswählen und die anderen Tasten deaktivieren?
-
20-09-2019 - |
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! :)
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
- 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
- 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
- Schauen Sie sich die Radiogroup Implementierung
- 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