2011-11-28 7 views
7

Quiero hacer una vista de lista no seleccionable y no se puede hacer clic. Estoy hablando del cambio de color que ocurre cuando hago clic en un elemento de la lista. El código se da a continuación. Soy un novato en Android, así que sea amable.¿Cómo puedo hacer que esta vista de lista no sea seleccionable?

de: listitem.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:padding="8px"> 

<TextView 
    android:id="@+id/label" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textColor="#FFFFFF"/> 

<TextView 
    android:id="@+id/data" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textSize="16px"/> 

</LinearLayout> 

de: details.java

TestActionAdapter() { 
     super(TestDetails.this, R.layout.action_list_item, actions); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     TestAction action = actions.get(position); 
     LayoutInflater inflater = getLayoutInflater(); 
     View view = inflater.inflate(R.layout.action_list_item, parent, false); 
     TextView label = (TextView) view.findViewById(R.id.label); 
     label.setText(action.getLabel()); 
     TextView data = (TextView) view.findViewById(R.id.data); 
     data.setText(action.getData()); 
     return view; 
    } 

Respuesta

16

Mira la respuesta aquí:

How to disable list items...

Básicamente se extienden ArrayAdapter y añadir dichos 2 funciones:

@Override 
public boolean areAllItemsEnabled() { 
    return false; 
} 

@Override 
public boolean isEnabled(int position) { 
    return false; 
} 
+0

que funcionó. Gracias por la rápida respuesta. –

+2

Pero el separador entre elementos ha desaparecido ahora. ¿Hay alguna manera de traerlos de vuelta? –

+3

La anulación del método areAllItemsEnabled() parece eliminar los divisores de vista de lista, por lo que solo se reemplaza isEnabled (int position) si desea mantener sus divisores. –

0

Cuando regresa vista desde getView(..) Método, sólo hay que poner en view.setEnabled(false) antes return view.

+0

Lo probé pero el color cambia a blanco todavía cuando hago clic en el elemento. –

8

Si lo que quieres es para evitar que todas las filas que destacan en tecleo sólo tiene que utilizar ListView android:listSelector="@android:color/transparent"

Cuestiones relacionadas