Ich habe eine ListView mit Checkbox:
Oncheckedchanged(..)
wird aufgerufen, wenn der Benutzer das Element in listview OncheckedChanged(..)
wird erneut aufgerufen, wenn der Benutzer über onItemClick(.....)
auf das Listenelement klickt
Ist das ein bekanntes Problem? wie man die Ereignisse unterscheidet.
%Vor%BEARBEITEN
onCheckedChanged () wird
genanntDas ist das erwartete Verhalten:
onCheckedChanged(CompoundButton buttonView, boolean isChecked)
wird für jedes Element aufgerufen, wenn sie aktiviert / deaktiviert sind. Android hat beschlossen, den Status aller Elemente für Sie zu verfolgen und ruft Sie jedes Mal bei jeder Änderung auf. Mit dem Parameter isChecked
können Sie unterscheiden, was passiert ist.
onItemClick()
wird immer dann aufgerufen, wenn eines der Elemente angeklickt wurde - das ist nicht unbedingt das Kontrollkästchen innerhalb des Elements, sondern irgendwo. Normalerweise wird der Artikel danach ausgewählt - auch hier nicht immer.
Wenn Sie wissen möchten, welches Element in der Listenansicht ausgewählt war, verwenden Sie OnItemSelectedListener.onItemSelected()
. Dies ist derjenige, der aufgerufen wird, um die Auswahl (ganzes Element) zu erhalten.
Übrigens: Sie müssen das Verhalten eines Kontrollkästchens nicht manuell programmieren. Das Häkchen setzen und das Häkchen in der Box wird von Android gezogen. Sie müssen nur den Status prüfen, sobald Sie wissen, welcher ausgewählt wurde. Die onCheckedChanged
Implementierung ist also soweit ich sehen kann gar nicht notwendig.
Ersetzen Sie den onCheckChangeListener durch onClickListener.
Das checkChanged wird zweimal aufgerufen, wie es aufgerufen wird, wenn Sie die Methode setChecked () aufrufen und wenn Sie auf das Kontrollkästchen klicken.
Tags und Links android listview android-listview