Подтвердить что ты не робот

Сдвиг recyclerview focus на последний элемент в списке

Я использую recyclerview для отображения сообщений в окне чата. Однако, когда новое сообщение редактируется, фокус просмотра ресайклера должен быть на последнем элементе. Я ожидаю, что будет какой-то способ перенести фокус recyclerview на последний элемент, а не на первый.

4b9b3361

Ответ 1

использовать recyclerView.smoothScrollToPosition(position);

позиция - ваш индекс последнего вставленного элемента. Это переместит ваш фокус RecyclerView на последний элемент.

Ответ 2

Использование может добавить любую из двух строк в объекте LinearLayoutManager, чтобы прокрутить ваш recyclerview до конца...

llm.setStackFromEnd(true);

ИЛИ

llm.setReverseLayout(true);

Ответ 3

Используйте

recyclerView.smoothScrollToPosition(position)
adapter.notifyDataSetChanged();

где position - индекс последнего элемента

recyclerView.getAdapter().getItemCount()-1

используйте это, чтобы получить последний элемент.

Это сработало для меня.

Ответ 4

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

recyclerView.smoothScrollToPosition(position);

Ответ 5

Есть два способа сделать это.

1. Когда вы создаете любой LayoutManager для RecyclerView, сделайте последний параметр в его конструкторе как true.

LinearLayoutManager layoutManager = new LinearLayoutManager(MainActivity.this,LinearLayoutManager.HORIZONTAL,true);

2: Просто скажите RecyclerView, чтобы перейти к последней позиции.

recyclerView.smoothScrollToPosition(lastPosition);

Ответ 6

Вы можете использовать app: stackFromEnd = "true" в своем XML-коде для представления переработчика, например:

 <android.support.v7.widget.RecyclerView
  android:id="@+id/message_list"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:layout_above="@id/message_input"
  android:layout_alignParentTop="true"
  app:stackFromEnd="true" />

Ответ 7

Вы можете просто использовать приведенный ниже код

recyclerView.smoothScrollToPosition(recyclerView.getBottom());