我正在使用Android Arch PagedListAdapter类。我遇到的问题是,由于我的应用程序是聊天风格的应用程序,因此在插入项目时需要滚动到位置0。但是PagedListAdapter找到了diff并在后台线程上调用了必要的方法,因此似乎没有可靠的方法来调用layoutManager.scrollToPosition(0)

如果有人对我如何在正确的时间滚动有任何想法,将不胜感激。谢谢!

这是我的房间道:

@Dao
abstract class MessagesDao {

    @Query("SELECT ...")
    abstract fun getConversation(threadId: String): DataSource.Factory<Int, Conversation>

}


然后是LivePagedListBuilder:

LivePagedListBuilder(database.messagesDao.getConversation(threadId), PagedList.Config.Builder()
            .setInitialLoadSizeHint(20)
            .setPageSize(12)
            .setEnablePlaceholders(true)
            .build()).build()

最佳答案

事实证明,有一个叫做AdapterDataObsever的漂亮东西,它使您可以观察PagedListAdapter项目的调用。这是我如何使用它来解决问题的方法。

conversationAdapter.registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() {
        override fun onItemRangeInserted(positionStart: Int, itemCount: Int) {
            if (positionStart == 0) {
                manager.scrollToPosition(0)
            }
        }
    })

关于android-paging - 如何将项目插入PagedListAdapter后正确滚动,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50980634/

10-10 11:51