У меня есть recyclerview, в котором я хочу динамически изменить позицию элемента на вершину после выбора элемента recyclerview.

Пожалуйста, предложите лучший способ для достижения вышеуказанной проблемы?

4
Anamika Chavan 22 Фев 2018 в 10:30

4 ответа

Лучший ответ

Вам необходимо поменять местами выбранный элемент с верхним в списке, а затем уведомить адаптер об изменении позиции. Пример кода будет выглядеть так:

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

Надеюсь, это поможет!

10
amit srivastava 22 Фев 2018 в 08:02

Попробуй это

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 

< Сильный > ИЛИ

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

< Сильный > ИЛИ

recyclerview.smoothScrollToPosition(0);  // scroll recyclerview to top 
5
Nilesh Rathod 22 Фев 2018 в 07:37

Добавить код ниже в клик элемента,

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 Фев 2018 в 07:34

Если у вас есть такие случаи, как, мы можем добиться этого подхода из @ manohar-reddy и вызовите notifyItemChanged(position); он также вызовет onBindViewHolder, а затем обновит ваш макет соответствующим образом.

* В этом случае, если элемент 0 имеет макет, отличный от других элементов

Возможно, вы захотите прочесть эту ссылку для правильного определения позиции элемента

Благодаря ответу @ amit-srivastava и @ manohar-reddy

0
mochadwi 28 Фев 2019 в 17:13