Why is my onItemSelectedListener not called in a ListView?

Janusz picture Janusz · Mar 16, 2010 · Viewed 35.2k times · Source

I'm using a ListView that is setup like this:

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

In my code I add an OnItemSelectedListener to the ListView like this:

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

my Activity implements the listener like that:

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

My hope was, that I would see this debug output the moment I click on something in the list. But the debug output is never shown in LogCat.

Answer

Janusz picture Janusz · Mar 16, 2010

The OnItemSelectedListener listens for list item selections and not list item clicks.

A selection in this case could be seen as moving the focus on this item with the device's trackpad.

To get the wanted behavior one must use the OnItemClickListener.