2016-01-26 5 views
1

LinearLayoutManager обеспечивает базовую реализацию для перемещения элементов в ресайклере. Предполагая следующую конфигурацию в recyclerView:Android LinearLayoutManager и перемещение при удалении объекта

E0 | E1 E2 E3 | E4

где | представляет эффективные границы recyclerView, удаление на E1 приведет к следующей окончательной настройке после всех перерисовки и анимации:

E0 | E2 E3 E4 |

Мне нужно выполнить другое поведение. В принципе хочу

| E0 E2 E3 | E4

перемещение других элементов на основе какой части, слева или справа от экрана (относительно этого в данном случае E2), я сделал удаление. В принципе, исходный элемент центра должен восприниматься как ось поворота, чтобы выбрать, какую часть двигаться.

Похоже, что это поведение невозможно. Установка stackFromEnd не решает проблему, потому что у нас есть аналоговая проблема для удаления с противоположной стороны. Кроме того, изменение значения stackFromEnd во время выполнения перед тем, как эффективно выполнить вызов адаптера.onItemRemoved, не решает проблему.

+0

Следующая ссылка может стоить взглянуть на: http://www.birbit.com/recyclerview-animations-part-2-behind-the-scenes/ – ap6491

ответ

0

Когда вы удаляете, просто позвоните scrollToPositionWithOffset(adapterPositionOf(E2), offsetOf(E2)).

+0

thankyou. То же самое можно добиться гладко с помощью smoothScrollBy. Хотя предлагаемое решение кажется обходным путем, мне было интересно, удалось ли более чистое решение (также ссылаясь на анимацию) с небольшим изменением в LinearLayoutManager –