RecyclerView BackgroundColor
Utilicé un RecyclerView
para mostrar algunos datos de texto. Tengo la lógica en él para seleccionar diferentes tarjetas.
Me gustaría cambiar la apariencia de las tarjetas seleccionadas.
- ¿Cómo animar recyclerview en desplazamiento como Google plus / Google newsstand?
- Clic en el elemento programáticamente en RecyclerView
- Firebase android ¿Cómo evitar que FirebaseRecyclerAdapter se actualice automáticamente?
- Arrastrar y soltar elementos en RecyclerView con GridLayoutManager
- Decoración de artículos Proguard y RecyclerView
public void toggleSelection(int pos) { RecyclerView.ViewHolder viewHolder = recView.findViewHolderForPosition(pos); if (selectedItems.get(pos, false)) { selectedItems.delete(pos); viewHolder.itemView.setBackgroundColor(Color.WHITE); } else { selectedItems.put(pos, true); viewHolder.itemView.setBackgroundColor(Color.GREEN); } notifyItemChanged(pos); }
Si utilizo mi código como este funciona. Mi evento onClick activa este código y el color de fondo de mi tarjeta cambia a verde.
Así que aquí está mi problema: el desplazamiento hacia abajo muestra otras tarjetas en la misma posición relativa (pero más abajo en la lista) con el mismo color de fondo aunque no estén seleccionadas; seleccionando la primera tarjeta y desplazándose hacia abajo hasta donde la octava tarjeta es la tarjeta visible superior muestra la octava carta resaltada.
- El uso del ejemplo de RecyclerView no compila
- ¿Cómo se puede agregar una línea de divisor en un Android RecyclerView?
- Pasar los datos de los elementos de los clics hechos por RecyclerView CardView a la actividad
- RecyclerView se desplaza automáticamente a WebView / Fresco Elemento SimpleDraweeView
- Pantalla Android Parpadea en mostrar / ocultar barras del sistema
- Bloc de vista de reciclador y problema de repetición
- "RecyclerView: No hay adaptador conectado; Omitir el diseño "para recyclerview en el fragmento
- Establecer margen en RecyclerView mediante programación
onBindViewHolder()
establecer los colores de forma explícita en el método onBindViewHolder()
.
Una vista de reciclador como el nombre sugiere recicla las vistas, por lo que el 0 º elemento se recicla como el octavo elemento en su caso. Utilizan el mismo titular de vista creado con el onCreateViewHolder()
Y cada vez que uno de ellos entra en la vista se llama al método onBindViewHolder()
.
Le sugiero que cree un campo booleano adicional en su modelo de datos, diciéndole si ha resaltado la vista o no. Deberá toggleSelection()
en toggleSelection()
. Entonces en el onBindViewHolder()
usted comprueba el valor de este campo y fija su color por consiguiente.
- Cómo obtener la altura correcta de la pantalla del navegador en javascript
- Expanda todas las entradas en el árbol con un solo clic