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.

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]); 

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.

  • Función de desplazamiento de listview dentro de la vista de desplazamiento
  • Android convertView, para usarlo o no?
  • No se puede cargar una imagen desde la URL
  • ¿Cómo puedo actualizar mi ListFragment cuando vuelve al diseño de la pila trasera?
  • Programe seleccionar el elemento ListView en Android
  • Listview se bloquea en modo retrato cuando se hace clic en elementos (con fragmentos)
  • Android: ¿Crear ListView en XML?
  • React Native ListView TextInput se bloquea desde la renderización de optimización de rendimiento
  • Objeto JSON a listView
  • Cómo ampliar el elemento de la lista desde el centro de la pizca
  • Error de cursor Android: "asegúrese de que el cursor se inicialice correctamente antes de acceder a los datos de él ..."
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.