Pregunta

Estoy usando un ListView que se configura como esto:

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

En mi código agrego una OnItemSelectedListener a la ListView como esto:

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

Mi actividad implementa el oyente como que:

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

Mi esperanza era que me gustaría ver esta salida de depuración en el momento que haga clic en algo en la lista. Pero el resultado de la depuración no se muestra en LogCat.

¿Fue útil?

Solución

El OnItemSelectedListener escucha para las selecciones de elementos de lista y no la lista clics artículo.

Una selección en este caso podría ser visto como mover el enfoque en este artículo con panel táctil del dispositivo.

Para conseguir el comportamiento deseado debe utilizar el OnItemClickListener .

Otros consejos

Esto se debe a que se esté probando con los dedos en un dispositivo táctil. En href="http://android-developers.blogspot.com/2008/12/touch-mode.html" modo táctil , no hay un enfoque y ninguna selección. Interfaces de usuario que la selección necesidad debe usar un tipo diferente de widgets, tales como botones de radio.

En un primer momento, se debe configurar ChoiceMode, y luego, en ListView, habrá no acepta el evento seleccionado porque setOnItemSelectedListener registed en AdapterView, y de devolución de llamada en handleDataChanged() método, pero la clase AbsListView reemplazar este método y nunca devolver la llamada OnItemSelectedListener

introducir descripción de la imagen aquí

se puede obtener el seletedItem por este método en 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());

        }
    });
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top