Frage

Ich bin mit einem Listview, die Einrichtung ist wie folgt:

<ListView android:id="@android:id/list" android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:longClickable="false"
    android:choiceMode="singleChoice">
</ListView>

In meinem Code füge ich ein OnItemSelectedListener an die Listview wie folgt aus:

getListView().setAdapter(adapter);
getListView().setOnItemSelectedListener(this);

meine Tätigkeit Geräte der Hörer wie folgt aus:

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    Log.d("Tag", "ListItemSelected: Parent: " + parent.toString() + " View: "
            + view.toString() + " Position: " + " Id: " + id);
}

Meine Hoffnung war, dass ich diese Debug-Ausgabe in dem Moment sehen, würde ich auf etwas in der Liste klicken. Aber die Debug-Ausgabe wird nie in LogCat gezeigt.

War es hilfreich?

Lösung

Das OnItemSelectedListener Streams für Listenelement Auswahlen und nicht Liste Artikel Klicks.

Eine Auswahl in diesem Fall bewegt den Fokus auf dieses Element mit dem Gerät des Trackpad zu sehen.

Um das Verhalten wollte man den OnItemClickListener verwenden müssen .

Andere Tipps

Es ist, weil Sie mit den Fingern auf einem Touch-fähiges Gerät zu testen passieren. In Touch-Modus , gibt es keinen Fokus und keine Auswahl. UIS, dass Bedarf Auswahl eine andere Art von Widget, wie Radio-Buttons verwenden sollte.

Zunächst sollten Sie setzen ChoiceMode und dann in Listview, es wird das ausgewählte Ereignis nicht akzeptieren, weil setOnItemSelectedListener in AdapterView registed und Rückruf in Methode handleDataChanged(), aber Klasse AbsListView diese Methode überschreiben und Rückruf nie OnItemSelectedListener

Sie können die seletedItem nach dieser Methode in setOnItemClickListener bekommen

     mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Log.e("TAG", "onItemClick: " + position);
            SparseBooleanArray positions = mListView.getCheckedItemPositions();
            Log.e("TAG", "onItemSelected: " + positions.toString());

        }
    });
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top