Tengo un lugar ListView
donde cada elemento de la lista contiene un TextView y dos botones diferentes. Algo como esto:
ListView
--------------------
[Text]
[Button 1][Button 2]
--------------------
[Text]
[Button 1][Button 2]
--------------------
... (and so on) ...
Con este código puedo crear un OnItemClickListener
para todo el artículo:
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> list, View view, int position, long id) {
Log.i(TAG, "onListItemClick: " + position);
}
}
});
Sin embargo, no quiero que se pueda hacer clic en todo el elemento, sino solo los dos botones de cada elemento de la lista.
Entonces mi pregunta es, ¿cómo implemento un onClickListener para estos dos botones con los siguientes parámetros:
int button
(en qué botón del elemento se ha hecho clic)int position
(que es el elemento en la lista en la que ocurrió el clic del botón)
Actualización: encontré una solución como se describe en mi respuesta a continuación. Ahora puedo hacer clic / tocar el botón a través de la pantalla táctil. Sin embargo, no puedo seleccionarlo manualmente con el trackball. Siempre selecciona todo el elemento de la lista y desde allí va directamente al siguiente elemento de la lista ignorando los botones, aunque configuré .setFocusable(true)
y setClickable(true)
para los botones getView()
.
También agregué este código a mi adaptador de lista personalizado:
@Override
public boolean areAllItemsEnabled() {
return false;
}
@Override
public boolean isEnabled(int position) {
return false;
}
Esto hace que ya no se pueda seleccionar ningún elemento de la lista. Pero no ayudó a hacer que los botones anidados fueran seleccionables.
Alguien una idea?