Android чат, добавить новое сообщение - PullRequest
1 голос
/ 20 июня 2020

Я работаю над чатом с помощью firebase и recyclerview. Я столкнулся с небольшой проблемой. Когда появляется новое сообщение, я использую notifyItemInserted, а затем smoothScrollToPosition. Когда приходит несколько первых сообщений (пока экран не заполнен сообщениями), они отображаются очень гладко и выглядят так же, как в Facebook Messenger, но когда дело доходит до прокрутки до нового сообщения, которое находится за пределами нашего экрана, оно появляется в мгновение ока, которое выглядит не очень хорошо. Я думал, что это как-то связано с переработкой представления с помощью recyclerview или с этой плавной прокруткой, но я не знаю, как с этим справиться.

Кто-то спросил код:

    mMessagesList.add(message);
    mChatRecyclerAdapter.notifyItemInserted(mChatRecyclerAdapter.getItemCount()-1);
    rvChatMessages.smoothScrollToPosition(mChatRecyclerAdapter.getItemCount()-1);

Не могли бы вы, ребята, поделиться некоторыми советы со мной? Спасибо

1 Ответ

1 голос
/ 20 июня 2020

В вашем вопросе много неизвестного, но, вообще говоря, если вы используете RecyclerView (как вы упомянули), вы можете улучшить свой пользовательский интерфейс, установив reverseLayout в значение «true» в вашем LinearLayoutManager (я предполагаю) . В этом случае ваши сообщения появятся внизу списка. У этого по-прежнему есть свои проблемы, если вы выполняете пейджинг, в зависимости от того, как вы пейджируете et c.


Обновление (ключевые моменты из чата ниже):

  1. Использовать обратный LinearLayoutManager (вариант конструктора) - не то же самое, что stackFromBottom
  2. Добавить данные в начало сбора данных (.add (0, ...)
  3. Вызвать notifyItemInserted (0) на адаптере
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...