Я понимаю, что этот ответ, вероятно, слишком поздно, но, возможно, он может помочь кому-то в будущем.
Позиция элемента в RecyclerView определяется положением соответствующего объекта данных (типа T) внутри PagedList . PagedList разработан так, чтобы выглядеть как старый добрый List , но его можно рассматривать как «бесконечный» список элементов.
PagedList получает свои элементы по страницам по запросу через нечто, называемое DataSource.Factory. Фабрика используется, потому что DataSource сам по себе может расти только в одном направлении. Если вам нужно добавить элементы в PagedList, изменить или удалить существующие элементы, вы должны сделать недействительным DataSource, и через DataSource.Factory будет создан новый экземпляр.
Итак, чтобы вставить ваши элементы данных туда, куда вы хотите, вы должны реализовать свои собственные DataSource и DataSource.Factory, создав подклассы этих базовых классов.
Примечание. Room, библиотека сохранения данных из AndroidX, предоставляет средства для автоматического создания экземпляров этих классов для ваших данных. Вы можете написать SQL-запрос так:
SELECT * FROM messages WHERE threadId=:threadId ORDER BY timestamp DESC
затем получите DataSource.Factory, используйте фабрику для создания LivaData > и, наконец, используйте перемещаемый список для отображения сообщений в RecyclerView в приложении чата. Затем, когда вы вставляете, обновляете или удаляете данные внутри БД, эти изменения автоматически распространяются на пользовательский интерфейс. Это может быть очень полезно.
Я рекомендую вам прочитать несколько похожих примеров кода: