34 Stimmen

Der Klick funktioniert nicht auf dem Listenelement Listview Android

Ich habe das Android listview mit der ListActivity implementiert. Hier habe ich das Problem, dass beim Klicken auf das Listenelement keine Aktion ausgeführt wird und die Blinkfarbe (orange) auch nicht kommt. Haben Sie eine Idee dazu, bitte antworten Sie auf meine Frage.

@Override
protected void onListItemClick(ListView l, View v, int position, long id) 
{
    super.onListItemClick(l, v, position, id);
    Toast.makeText(getApplicationContext(), "Nachricht Nachricht", Toast.LENGTH_SHORT)
            .show();

}

Ich habe diesen Code auch in die Haupt ListActivity eingefügt.

124voto

Andro Selva Punkte 53086

Das erste, was Sie hier beachten müssen, ist, dass immer wenn klickbare Elemente wie Schaltflächen oder ImageButtons in Ihrem ListView-Element vorhanden sind, sie die Kontrolle über Klickereignisse übernehmen. Und so erhält Ihr ListView nicht die Chance, das Klickereignis zu akzeptieren.

Was Sie einfach tun müssen, ist, das focusable-Attribut für die Schaltfläche oder ImageButton, die Sie in Ihrem ListView haben, auf false zu setzen. Aber sie funktionieren trotzdem ohne Probleme und auch Ihr onListItemClick des ListViews wird ebenfalls funktionieren.

Versuchen Sie dies,

Hier habe ich dieses android:focusable="false" hinzugefügt und es funktioniert gut. Probieren Sie es aus.

12voto

Yogesh Somani Punkte 2624

Haben Sie den Auswahlmodus des ListView auf SINGLE gesetzt:

 listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

Und wenn Sie ein klickbares ImageView, TextView oder Button im Listenelement haben, machen Sie sie nicht fokussierbar (in Ihrer Adapterklasse):

 yourButton.setFocusable(false);
yourButton.setFocusableInTouchMode(false);

4voto

vinay kumar Punkte 1421

Verwenden Sie einen benutzerdefinierten Adapter? und füllen Sie das Layout mit einem Button oder einer anderen Ansicht, die den Fokus der ListView als Kind blockiert, dann funktioniert es natürlich nicht. Stellen Sie sicher, dass Sie

    android:focusable="false"

für solche Ansicht in der XML-Datei setzen. Hoffentlich funktioniert das für Sie.

4voto

Mehul Punkte 71

Setze dies in deiner ListActivity Java-Datei

listview1.setFocusable(false);

2voto

Yoann Hercouet Punkte 17691

Eigentlich gibt es einen Parameter dafür, um zu verhindern, dass Untersichtsfenster den Fokus erhalten. Fügen Sie einfach Folgendes im übergeordneten Layout hinzu:

android:descendantFocusability="blocksDescendants"

Wie die Dokumentation erklärt:

Die ViewGroup wird verhindern, dass ihre Nachkommen den Fokus erhalten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X