2011-06-04 33 views
21

Tengo una listaVer que vuelvo a visualizar con la respuesta correcta resaltada cuando el usuario selecciona un elemento. Sin embargo, en ese momento me gustaría desactivar la selección de elementos de vista de lista; el usuario solo puede pasar a la siguiente pregunta presionando un botón. Sin embargo, incluso si deshabilito los elementos de esta manera:Android: deshabilitar la selección de ListView

private void disableItemSelection() { 
     ListView lv = getListView(); 
     for (int i = 0; i < lv.getChildCount(); i++){ 
      View v = lv.getChildAt(i); 
      v.setEnabled(false); 
     } 
    } 

... aún resalta la selección cuando el usuario la selecciona. ¿Alguna idea?

+1

Did u encontrar una solución a esto? – aryaxt

+0

No, hice una solución que los lleva a la siguiente pregunta si intentan seleccionar un botón nuevamente. –

Respuesta

33

La razón del desplazamiento está bloqueado se debe a que se está configurando en

ListView 

he encontrado una manera de desactivar el resaltado sin bloquear el desplazamiento. Es necesario para su instalación en ListAdapter como se muestra a continuación:

ArrayAdapter<String> myList = new ArrayAdapter<String>(this, R.layout.list_item, strText) { 
      public boolean isEnabled(int position) 
      { 
        return false; 
      } 
     }; 
+5

No necesita usar un ArrayAdapter, si no lo desea. Simplemente anule el método isEnabled en su propio adaptador personalizado y listo. – leocadiotine

+0

¿no significa que si hay un drawable para las filas que tiene el estado desactivado, también cambiará su imagen? ¿es posible desactivar el clic y aún no cambiar el dibujable? –

2

acabo ocultaron el elemento seleccionado con esto:

listView.setSelector(new ColorDrawable(0)); 

Y luego le muestran de nuevo mediante la restauración de lo que sea estirable que estaba utilizando anteriormente :

wifiSsid.setSelector(R.drawable.listview_selector); 
2

que utilizan Android: choiceMode="none" como se documenta here.

+0

Esto solo establece si los elementos de la lista pueden tener un modo seleccionado, pero no el resaltado :( – alopix

23

Puede añadir atributos a Listview diseño XML para desactivar varias filas de luz de alta como

android:listSelector="@android:color/transparent"    
android:cacheColorHint="@android:color/transparent" 
+0

Creo que este es el mejor ansewr, siempre es mejor establecer estos detalles en el xml que en el código. – Sierisimo

Cuestiones relacionadas