2011-02-26 14 views
35

Estoy implementando un ListView sin fin (como en la aplicación de Twitter). Quiero hacer que el último elemento no se pueda seleccionar. De modo que si se selecciona el penúltimo elemento y me desplazo hacia abajo con mi trackball, no ocurre nada. Intenté configurar android: focusable = "false" y android: cickable = "false" pero no noté ningún cambio.¿Puedo hacer que un elemento ListView no sea seleccionable?

+1

por favor, añada la única respuesta correcta! –

Respuesta

93

Es bastante fácil, en su adaptador puede anular el método isEnabled (int position) y devolver false para este elemento.

+0

Documentación de la firma del método: http://developer.android.com/reference/android/widget/BaseAdapter.html#isEnabled(int) –

+2

escandalosamente, BaseExpandableListAdapter no tiene este método :( –

+0

En realidad, no ayuda mucho (también podría hacer convertView.setEnabled (false) en getView() para tales elementos). Pero podría tener su propio selector de elementos como en mi caso, para el elemento normal tiene selector naranja bg y para uno deshabilitado - bg de color gris. sigue siendo clicable visualmente. Sin embargo, si además agrega alguna casilla de verificación o algo que lo hace invisible para que intercepte el foco, entonces sería como no se puede cliquear. – Stan

0

Si desea obtener el mismo efecto sin tener que tener un adaptador personalizado, hace que OnClickListener ignore ese elemento cuando se toca y luego establece un color de fondo sólido para la vista del elemento, por lo que no se resalta cuando se toca.

0

si está utilizando el adaptador de matriz personalizada simplemente anule este método.

@Override 
public boolean isEnabled(int position) { 
    return false; 
} 
Cuestiones relacionadas