Tengo un ListView
donde cada elemento de la lista contiene un TextView y dos botones diferentes. Algo como esto:Android: elementos ListView con múltiples botones en los que se puede hacer clic
ListView
--------------------
[Text]
[Button 1][Button 2]
--------------------
[Text]
[Button 1][Button 2]
--------------------
... (and so on) ...
Con este código puedo crear una OnItemClickListener
para todo el material:
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 todo el elemento se pueda hacer clic, pero sólo los dos botones de cada elemento de lista.
Así que mi pregunta es, ¿Cómo se implementa un OnClickListener para estos dos botones con los siguientes parámetros:
int button
(el cual ha hecho click en el botón del elemento)int position
(que es el elemento en la lista en la que se produjo el clic de 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 la bola de seguimiento. 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 en getView()
.
También he añadido el código a mi adaptador lista personalizada:
@Override
public boolean areAllItemsEnabled() {
return false;
}
@Override
public boolean isEnabled(int position) {
return false;
}
Esto hace que ningún elemento de la lista es seleccionable para nada más. Pero no ayudó a hacer los botones anidados seleccionables.
¿Alguien una idea?
¿Todavía se necesitan? –
Si observa el código BaseAdapter, verá que areAllItemsEnabled() e isEnabled() están codificados como verdaderos, lo que los convierte en simples marcadores de posición sin ninguna lógica. –
¿Qué pasa si quiero usar un SimpleCursorAdapter? ¿Tengo que hacer un adaptador personalizado para extender el simplecursoradapter? – oratis