Question

J'utilise un ListView qui est configuré comme ceci:

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

Dans mon code, j'ajouter un OnItemSelectedListener au ListView comme ceci:

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

Mon activité met en œuvre l'auditeur comme ça:

@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);
}

Mon espoir était que je verrais cette sortie de débogage le moment je clique sur quelque chose dans la liste. Mais la sortie de débogage est jamais montré dans LogCat.

Était-ce utile?

La solution

Le OnItemSelectedListener écoute les sélections d'éléments de liste et pas la liste clique article.

Une sélection dans ce cas, pourrait être considérée comme déplacer l'accent sur ce point avec le pavé tactile de l'appareil.

Pour obtenir une de comportement voulu doit utiliser le OnItemClickListener .

Autres conseils

Il est parce que vous arrive d'être tester avec vos doigts sur un périphérique tactile. En mode tactile , il n'y a pas mise au point et aucune sélection. UIs que la sélection de besoin d'utiliser un autre type de widget, tels que les boutons radio.

Dans un premier temps, vous devez définir ChoiceMode, puis, ListView, il n'y aura pas d'accepter l'événement sélectionné parce setOnItemSelectedListener registed dans AdapterView, et le rappel de la méthode handleDataChanged(), mais la classe AbsListView remplacer cette méthode et ne jamais callback OnItemSelectedListener

vous pouvez obtenir le seletedItem par cette méthode dans setOnItemClickListener

     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());

        }
    });
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top