2011-10-25 5 views
18

Tengo un ListView con algunas secciones personalizadas en él. Cada sección tiene su propia vista de encabezado. Quiero que se pueda hacer clic en los elementos de la lista, pero obviamente no quiero que se pueda hacer clic en los encabezados de las secciones. Entonces en el xml para los encabezados de sección agregué android:clickable="false".android: clickable = "true" significa que no se puede hacer clic en?

Al depurar me di cuenta de que los encabezados de las secciones seguían respondiendo a mi setOnItemClickListener(). Luego intenté configurar android:clickable="true" en el XML. Y por supuesto, las vistas de encabezado de sección ya no responden a los clics ...

¿Cuál es el problema aquí? ¿Por qué es esa configuración clickable = true diciéndole que es NO haciendo clic? ¿Estoy malentendiendo algo aquí? Aquí está mi XML:

<?xml version="1.0" encoding="utf-8"?> 
<TextView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/item_text" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textColor="@color/black" 
    android:background="@android:color/transparent" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:paddingLeft="30dp" 
    android:clickable="true" /> 

Si fijo que clickable="false" en la parte inferior, a continuación, esta visión comienza a responder a la setOnItemClickListener() ...

+0

¿Puede agregar también el código de su adaptador? –

+1

Tengo el mismo problema y no he agregado ningún oyente onClick personalizado. –

+0

intente utilizar viewholder en el adaptador de custome y dé clickevents en su clase de adaptador ..http: //stackoverflow.com/questions/27743179/click-event-not-working-on-button-in-listview-item/27743279#27743279 –

Respuesta

17

Cuando se establece el OnItemClickListener, el evento onItemClicked sólo serán llamados si el hijo del ListView no tiene el conjunto OnClickListener. La configuración que se puede hacer clic en verdadero proporcionará la vista secundaria (en este caso, su TextView) con un OnClickListener vacío. Dado que TextView 's OnClickListener está configurado, el OnItemClickListener no se llamará.

+2

He estado tratando de experimentar con la comprensión de su explicación, pero no estoy teniendo suerte. ¿Puedes mostrar un código de ejemplo básico que demuestre que lo que dices es correcto? Tal vez simplemente no lo estoy entendiendo ... –

1

Creo que no debería escribir android:clickable="true" cuando era un niño de la vista de elementos de la lista. Si tiene un selector para listitem, solo setbackground en la etiqueta raíz.

Cuestiones relacionadas