2011-09-12 15 views
36

Cómo hacer que los elementos en una vista de lista no puedan hacer clic. Obtuve temas y elementos en una vista de lista, pero la vista es la misma tanto para temas como para elementos. los elementos tienen clic pero el tema no está habilitado para hacer clic. cómo lograr estoCómo hacer que un elemento en una vista de lista no se pueda hacer clic en Android

la lista se verá como

Topic 
item 
Topic 
item 
item 

tema. haga clic en able (false) no funcionó, por favor ayuda

+0

Ha tryed listviews ampliables ?? – PedroAGSantos

+0

No, explique – Jes

Respuesta

53

compartir mi experiencia, la siguiente hizo el truco (vista hace referencia a la vista de lista de elementos):

view.setEnabled(false); 
view.setOnClickListener(null); 
  • Habilitando al anular el método no funcionó ya que el método nunca fue invocado.
  • configuración enfocable a falso no funcionó tan bien.
+0

que hizo el truco para mí, gracias –

+4

El problema con mi solución es volver a habilitar el clic. Uno anuló el oyente clic, no sabe cuál fue el oyente que el ListView utilizó previamente. Consulte la solución isEnabled si desea volver a habilitar la opción de clic/selección: http://developer.android.com/reference/android/widget/BaseAdapter.html#isEnabled(int) –

71

No sé si todavía lo necesita, pero puede implementar su propio adaptador y anular el método isEnabled (int position). Dependiendo del tipo de vista del elemento, se devolverá verdadero o falso.

+0

habilitando al reemplazar el método no funcionó ya que el método nunca fue invocado –

+3

gracias, funciona! – pawegio

+0

@ AlikElzin-kilaka ¿Puedes explicar lo que no funcionó? Para mí funcionó perfectamente y creo que es la solución más elegante. – Noya

20

Para que los elementos de una lista no se puedan hacer clic, debe hacer que el adaptador devuelva falso en su método isEnabled para los elementos de la lista. Una manera fácil de crear una instancia de un adaptador y anular isEnabled se puede hacer de la siguiente manera:

SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_1, null, from, to, 0) { 
    @Override 
    public boolean isEnabled(int position) { 
     return false; 
    } 
}; 
+0

Este método evitó que las líneas de separación se muestren entre mis elementos de lista. En su lugar, establecí la siguiente propiedad en el XML de ListView 'android: listSelector =" @ android: color/transparent "' y funcionó para mí. – Richard

7

Esta es la respuesta correcta:

he encontrado un montón de comentarios diciendo que

setEnabled(false) 
setClickable(false) 
setFocusable(false) 

quiere trabajar, pero la respuesta es NO

El La única solución para este enfoque es hacer:

view = inflater.inflate(R.layout.row_storage_divider, parent, false); 
view.setOnClickListener(null); 
1

En su adaptador, usted tiene que poner esto:

view = inflator.inflate(R.layout.items_menu_header, null);  
view.setOnClickListener(null); 

utilizo un valor lógico para identificar si cabecera o un elemento, por lo que asignan un diseño diferente para cada tipo.

4

Conjunto listSelector transparentes en ListView

android:listSelector="@android:color/transparent" 
1

En su ListView añadir el siguiente atributo

android:cacheColorHint = "#00000000" 
Cuestiones relacionadas