2011-03-06 16 views
7

Tengo una vista de lista y un adaptador personalizado.Listview onItemClick veces no responde

en mi lista vista fijo esto:

lv.setOnItemClickListener (...)

todo está funcionando bien. Pero cuando comienzo a desplazarme, no. Mientras me desplazo lentamente, es estable (se llama a onClimateClick), pero cuando me desplazo hacia abajo más rápidamente o hacia abajo & varias veces rápidamente, al seleccionar un elemento no se desencadena un evento. Pero si espero un poco o sigo haciendo clic en un elemento o me desplazo lentamente hacia arriba, funciona aleatoriamente.

A veces, cuando hago clic en un elemento, aparece el fondo amarillo (y no se llama a OnClickClick). A veces, el fondo naranja se mantiene incluso después de que dejo de tocar (y no se llama aItemClick). A veces el fondo no cambia en absoluto (y onItemClick no se llama). Y a veces funciona.

Los elementos de la lista están compuestos por varios textView/imageview/linearlayout (configuré para cada foco = falso que no cambió nada) dinámicamente inflados con un titular de vista.

¿Alguien tiene una idea de lo que está mal o tiene una idea de cómo depurarlo?

(El código fuente es demasiado grande para ser pegado aquí, puedo enviar el código fuente o el apk si lo desea)

+0

¿Podría proporcionar algún código? Es difícil diagnosticar un problema si el código que lo produce no se puede ver. – Shade

+0

¿Está ajustando los parámetros de interactividad de las vistas por cualquier motivo (seleccionable/seleccionable/enfocable/habilitado)? No debería tener que hacer esto y hacerlo puede causar resultados muy extraños. Si no puede publicar el código de Actividad aquí, póngalo en algo así como Pastebin o coloque el código en un repositorio público en algún lugar como Github para que podamos analizarlo. Aclamaciones. – Devunwired

+0

para el problema de las volutas rápidas, probablemente esté llegando a la parte inferior/superior y estará en Android 2.2. Tiene un error en la clase 'Scroller' por el cual no" detiene "el desplazamiento, por lo que debe esperar a que" consuma "su impulso o haga clic una vez para" detenerlo "(no es algo visible), antes poder hacer clic en los contenidos. Sucede en 'ScrollViews' también. – bigstones

Respuesta

2

Añadir esta línea para que la disposición de los padres de la vista de lista fila encargo archivo XML androide : descendantFocusability = "" blocksDescendants

también en el TextView de su inflador (Custom vista fila) el diseño sólo tiene que añadir:

androide: enfocable = "false" androide: focusableInTouchMode = "false"

1

Tuve un problema similar. Mis elementos ListView consistían en un LinearLayout que contenía un ImageView y un TextView. Además de lo siguiente para mi diseño:

android:descendantFocusability="blocksDescendants" 

y la siguiente para mi TextView y ImageView, como se sugiere en otra respuesta:

android:focusable="false" 
android:focusableInTouchMode="false" 

También añadió esta esto a mi ImageView:

android:clickable="false" 
Cuestiones relacionadas