tipos studio progressbar progreso personalizado example desplegable barra adaptadores android listview selecteditem

studio - resaltando el elemento seleccionado en la vista de lista en Android



progressbar en android studio (4)

En listview xml agrega el modo "singleChoice"

<ListView android:layout_width="match_parent" android:layout_height="wrap_content" android:choiceMode="singleChoice" (...) > </ListView>

En el diseño del elemento de la lista, agrega

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>

Tengo 1 lista de contactslist vista de lista. Escribí el código para resaltar el elemento seleccionado en ListView . Está funcionando. Cuando hago clic en 1 elemento, se resalta ese elemento, pero el problema es que si hago clic en otro elemento también lo resaltaré. Quiero resaltar solo el elemento seleccionado. La selección anterior deberá desaparecer cuando haga clic en otro elemento.

arg1.setBackgroundResource(R.drawable.highlighter);

Este es el código en el oyente click que usa 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]);


Pruebe esto en onListItemClick

view.getFocusables(POSITION); view.setSelected(true);

Destaca la selección.


Una mejor forma es 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"/>

luego establece el fondo para la raíz de tu list_row.xml android: background = "? android: attr / activatedBackgroundIndicator"


ListViews de forma predeterminada no tiene un conjunto de choiceMode (está configurado en none ), por lo que la selección actual no se indica visualmente.

Para cambiar esto, solo necesita establecer el atributo choiceMode de su ListView a singleChoice .
Si desea un fondo personalizado para los elementos seleccionados en su lista, también debe establecer el atributo listSelector . Allí puede especificar no solo los colores, sino también los drawables (imágenes, capas / estado-dibujables).

<ListView android:id="@+id/my_list" android:choiceMode="singleChoice" android:listSelector="@android:color/darker_gray" />

Si no usa un ListView directamente, sino una ListActivity , estos atributos deben establecerse a partir del código, por lo que debe ampliar 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 estaba usando un oyente de clic para cambiar el fondo de la fila seleccionada, elimínelo de su código y utilice el método adecuado desde arriba.

Responder a la actualización

Si configura el fondo de su método getView, en lugar de usar un color estático, aplique una lista de estado dibujable al fondo de la fila con duplicadoParentState establecido en verdadero. De esta forma cambiará su visualización en función del estado actual del elemento: normal, enfocado, presionado, etc.