Stack Overflow на русском Asked by Simatsu Edgeworth on December 19, 2021
Есть RecyclerView, в который могут добавляться элементы в начало и конец списка.
<android.support.v7.widget.RecyclerView
android:id="@+id/recylerview_message_list"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginBottom="6dp"
app:layout_constraintBottom_toTopOf="@id/view"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/main_appBarLayout">
При добавлении в начало все ок, но при добавлении в конец все автоматически скроллится на 4 элемента вверх.
Инициализация recyclerView:
@Override
public void showMessages(List<MessageModel> messages) {
chatMessages = messages;
Collections.sort(chatMessages);
linearLayoutManager = new LinearLayoutManager(this, OrientationHelper.VERTICAL, false);
recyclerView.setAdapter(messageListAdapter);
recyclerView.setLayoutManager(linearLayoutManager);
recyclerView.setOnScrollListener(new EndlessRecyclerViewScrollListener(linearLayoutManager, this));
linearLayoutManager.setStackFromEnd(true);
chatLoadingProgressBar.setVisibility(View.INVISIBLE);
view.setVisibility(View.VISIBLE);
layoutChatBox.setVisibility(View.VISIBLE);
}
Добавление нового элемента (Закомментированно то что я уже попробовал)
@Override
public void addMessage(MessageModel message) {
//List<MessageModel> oldMessages = new ArrayList<>(chatMessages);
chatMessages.add(message);
//linearLayoutManager.onRestoreInstanceState(recyclerViewState);
//recyclerView.setAdapter(messageListAdapter);
//messageListAdapter.notifyItemRangeChanged(0, chatMessages.size());
//messageListAdapter.notifyItemRangeChanged(messageListAdapter.getItemCount(), chatMessages.size());
//messageListAdapter.notifyDataSetChanged();
//messageListAdapter.notifyItemInserted(chatMessages.size());
//DiffUtil.DiffResult result = DiffUtil.calculateDiff(new CustomDiffUtilCallback(old, chatMessages));
//result.dispatchUpdatesTo(messageListAdapter);
}
Как отключить автоматический скролл при добавлении элементов в конец списка? При добавлении в начало все работает с messageListAdapter.notifyItemInserted(0);
возможно это ответ на ваш
Используйте recyclerView.smoothScrollToPosition
recyclerView.smoothScrollToPosition(recyclerView.getAdapter().getItemCount() - 1);
Answered by Геннадий Курбесов on December 19, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP