Tengo recyclerview porque quiero cambiar la posición del elemento dinámicamente a la parte superior después de seleccionar el elemento de recyclerview.

¿Sugiere la mejor manera de lograr el problema anterior?

2
Anamika Chavan 22 feb. 2018 a las 10:30

4 respuestas

La mejor respuesta

Debe intercambiar el elemento seleccionado con el elemento superior en la lista, luego notificar a su adaptador sobre el cambio de posición. Un código de muestra se vería así:

Collections.swap(orderItems.getItems(), position, 0);
                notifyItemMoved(position, 0);

¡Espero que ayude!

10
amit srivastava 22 feb. 2018 a las 08:02

Prueba esto

String Item = List.get(position); 
List.remove(position);  // remove item from the list
List.add(0,removedItem); // add at 0 index of your list
notifyDataSetChanged();
linearLayoutManager.scrollToPositionWithOffset(0, 20); // scroll recyclerview to top 

O

recyclerview.getLayoutManager().scrollToPosition(0)  // scroll recyclerview to top 

O

recyclerview.smoothScrollToPosition(0);  // scroll recyclerview to top 
5
Nilesh Rathod 22 feb. 2018 a las 07:37

Agregue el siguiente código al hacer clic en el artículo,

String removedItem = actualList.remove(position); 
//actualList is list used to populate recylerview and position is selected 
//item position
actualList.add(0,removedItem);
notifyDataSetChanged();
2
rajan ks 22 feb. 2018 a las 07:34

Si tiene diferentes casos como esto, podemos lograr este enfoque desde @ manohar-reddy y llame a notifyItemChanged(position), también llamará a onBindViewHolder, luego actualice su diseño en consecuencia.

* En este caso, si el elemento 0 tiene un diseño diferente al de los otros elementos

Es posible que desee leer esta referencia para obtener la posición del elemento correctamente

Gracias a @ amit-srivastava respuesta y @ manohar-reddy

0
mochadwi 28 feb. 2019 a las 17:13