Resaltando el elemento seleccionado en el listview en android
Tengo 1 lista de ver contactslist
. Escribí el código para resaltar el elemento seleccionado en el ListView
. Está funcionando. Cuando hago clic en 1 elemento que está destacando que el tema, pero el problema es que si hago clic en otro elemento que está destacando que también. Quiero resaltar el elemento seleccionado solamente. La selección anterior tendrá que desaparecer cuando haga clic en otro elemento.
arg1.setBackgroundResource(R.drawable.highlighter);
Éste es el código del oyente de clics que utiliza para resaltar el elemento seleccionado. por favor ayudame.
- Adaptador personalizado que no muestra ningún dato en ListView
- Al desplazar Custom ListView, el valor de la casilla de verificación cambia
- Android: Cambiar el fondo del botón en ListView Row con onClick
- Desplazar un ListView por píxeles en Android
- Barra de Acción de Android Buscar con listview
Actualizar
Estoy configurando el fondo de las filas en el adaptador:
public int[] colors = new int[]{0xFFedf5ff, 0xFFFFFFFF}; public int colorPos; [...] colorPos = position % colors.length; row.setBackgroundColor(colors[colorPos]);
- Android: ¿Cómo puedo hacer elementos desplazables horizontalmente en una lista vertical?
- Cómo finalizar una actividad de una clase de adaptador ListView?
- ¿Cómo agrego un onclicklistener a un botón dentro de un adaptador listview?
- Vista de lista con la opción de actualización y supresión mediante contextmenu
- Me gusta saber cómo obtener el elemento seleccionado en la lista expandible ANDROID
- Efecto de botón de diapositiva en el elemento de vista de lista para Android
- QUERIDO: TableLayout-Like ListView
- Androide. Desplazamiento de 2 vistas de lista
ListViews
por defecto no tiene un conjunto choiceMode
(está establecido en none
), por lo que la selección actual no se indica visualmente.
Para cambiar esto, sólo tiene que establecer el atributo choiceMode
de su ListView
a singleChoice
.
Si desea que el fondo personalizado para los elementos seleccionados en su lista, también debe establecer el atributo listSelector
. Allí se pueden especificar no sólo los colores, sino también los dibujables (imágenes, capas / estado-dibujables).
<ListView android:id="@+id/my_list" android:choiceMode="singleChoice" android:listSelector="@android:color/darker_gray" />
Si no utiliza un ListView
directamente, sino una ListActivity
, estos atributos deben establecerse a partir del código, por lo que debe extender el método onCreate
su actividad con estas líneas:
getListView().setChoiceMode(ListView.CHOICE_MODE_SINGLE); getListView().setSelector(android.R.color.darker_gray);
Por lo tanto, si utilizaba un oyente de clics para cambiar el fondo de la fila seleccionada, elimínela del código y utilice el método adecuado de arriba.
Respuesta a la actualización
Si establece el fondo de su método getView, en lugar de utilizar un color estático, aplique una lista de estado dibujable al fondo de fila con duplicateParentState establecido en true. De esta manera cambiará su visualización en base al estado actual del elemento: normal, enfocado, presionado, etc.
En el listview xml agregue el modo "singleChoice"
<ListView android:layout_width="match_parent" android:layout_height="wrap_content" android:choiceMode="singleChoice" (...) > </ListView>
En la disposición del elemento de lista, agregue
Android: background = "? Android: attr / activatedBackgroundIndicator
ejemplo
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:background="?android:attr/activatedBackgroundIndicator"> <!-- your item content--> </LinearLayout>
Una mejor manera está en su tema, @ drawable / list_selector
List_selector.xml:
<!-- <item android:drawable="@color/android:transparent" android:state_selected="true" /> --> <item android:drawable="@color/list_bg" android:state_selected="true"/> <item android:drawable="@color/list_bg" android:state_activated="true"/> <item android:drawable="@color/transparent"/>
Entonces establece el fondo para la raíz de tu list_row.xml android: background = "? Android: attr / activatedBackgroundIndicator"
Pruebe esto en onListItemClick
view.getFocusables(POSITION); view.setSelected(true);
Destaca la selección.
- ¿Por qué necesito agregar el archivo de configuración a mi proyecto para configurar gcm correctamente?
- Los botones de notificación de Android no aparecen