2015-01-21 1 views
2

Скажем, у меня есть RecyclerView, содержащий много видов элементов: [a, b, c, d, e, ...]. Если я хочу вставить новый ItemView X между b и c, я обновляю свою базовую коллекцию и звоню notifyItemInserted(2). У меня теперь есть [a, b, X, c, d, e, ...].Android RecyclerView: по элементу, вставьте push вверх, а не вниз

Моя проблема заключается в том, что, когда появляется X, он толкает каждый вид после самих вниз (толкающего e из экрана), и мне нужно, чтобы подтолкнуть каждый вид перед тем самых вверх (толкание a из экрана).

Есть ли способ сделать это?

+0

Странно. Я использую GridLayoutManager, и поведение по умолчанию похоже на то, что вы хотели бы иметь, и я ищу способ отменить это обратно к тому, что у вас есть. – m02ph3u5

ответ

0

Это происходит потому, что LinearLayoutManager рассматривает начало списка как позицию привязки. Если вы хотите, чтобы конец списка был фиксированным, вы можете установить stackFromEnd = true;. В этом случае, когда список загружается в первый раз, вы увидите;

V W X Y Z // assuming alphabet is your list of items

Это общий случай для таких вещей, как разговор приложений.

Если вы хотите, чтобы он начинался с начала, а stackFromEnd - true, вы можете позвонить scrollToPosition(0), когда инициализируется адаптер.

+0

hey @yigit, я использую 'stackFromEnd (true)' для поддержания правильной позиции, когда отображается клавиатура. Но когда в recyclerview (1 или 2) есть несколько элементов, то эти элементы были показаны внизу ресайклинга с некоторым белым пространством вверху. Есть ли способ разрешить stackfromend, если список превышает текущий размер видового экрана? –

+0

извините, в конце формы стека нет таких настроек, и мы не планируем добавлять. – yigit

Смежные вопросы