如何使用recyclerView和PagedListAdapter在滚动到顶部时编写实现?
How to write implementation while scrolling to the top using recyclerView and PagedListAdapter?
我使用 Android Jetpack 组件来开发我的聊天应用程序,我想在我的聊天记录屏幕中添加对分页的支持,因为从我的数据源获取数据并在 RecyclerView 中呈现消息时花费了太多时间,所有教程都在谈论底部分页及其与我的其他屏幕(如联系人)配合得很好,但我没有找到顶部分页的任何实现,我尝试使用 PagedList.BoundaryCallback
编写我的实现,但它没有用。
这是我的代码:
@MainThread
override fun onZeroItemsLoaded() {
super.onZeroItemsLoaded()
Log.d(MessageBoundaryCallback::class.java.simpleName, "onZeroItemsLoaded()")
helper.runIfNotRunning(PagingRequestHelper.RequestType.INITIAL) {
val db = FirebaseFirestore.getInstance()
db.collection(Constants.FIRE_STORE_MESSAGES_COLLECTION_NAME)
.whereEqualTo(Constants.CHAT_ID, chatId)
.orderBy(Constants.MESSAGE_TIME, Query.Direction.DESCENDING)
.limit(pageSize)
.get().addOnCompleteListener(createMessageCallback(it))
}
}
override fun onItemAtFrontLoaded(itemAtFront: Message) {
super.onItemAtEndLoaded(itemAtFront)
Log.d(MessageBoundaryCallback::class.java.simpleName, "onItemAtEndLoaded($itemAtFront: Message)")
helper.runIfNotRunning(PagingRequestHelper.RequestType.BEFORE) {
val db = FirebaseFirestore.getInstance()
db.collection(Constants.FIRE_STORE_MESSAGES_COLLECTION_NAME)
.whereEqualTo(Constants.CHAT_ID, chatId)
.whereLessThan(Constants.MESSAGE_TIME, itemAtFront.time)
.orderBy(Constants.MESSAGE_TIME, Query.Direction.DESCENDING)
.limit(pageSize)
.get().addOnCompleteListener(createMessageCallback(it))
}
}
我只是反转我的布局管理器
layoutManager.reverseLayout = true
一切都很顺利
我使用 Android Jetpack 组件来开发我的聊天应用程序,我想在我的聊天记录屏幕中添加对分页的支持,因为从我的数据源获取数据并在 RecyclerView 中呈现消息时花费了太多时间,所有教程都在谈论底部分页及其与我的其他屏幕(如联系人)配合得很好,但我没有找到顶部分页的任何实现,我尝试使用 PagedList.BoundaryCallback
编写我的实现,但它没有用。
这是我的代码:
@MainThread
override fun onZeroItemsLoaded() {
super.onZeroItemsLoaded()
Log.d(MessageBoundaryCallback::class.java.simpleName, "onZeroItemsLoaded()")
helper.runIfNotRunning(PagingRequestHelper.RequestType.INITIAL) {
val db = FirebaseFirestore.getInstance()
db.collection(Constants.FIRE_STORE_MESSAGES_COLLECTION_NAME)
.whereEqualTo(Constants.CHAT_ID, chatId)
.orderBy(Constants.MESSAGE_TIME, Query.Direction.DESCENDING)
.limit(pageSize)
.get().addOnCompleteListener(createMessageCallback(it))
}
}
override fun onItemAtFrontLoaded(itemAtFront: Message) {
super.onItemAtEndLoaded(itemAtFront)
Log.d(MessageBoundaryCallback::class.java.simpleName, "onItemAtEndLoaded($itemAtFront: Message)")
helper.runIfNotRunning(PagingRequestHelper.RequestType.BEFORE) {
val db = FirebaseFirestore.getInstance()
db.collection(Constants.FIRE_STORE_MESSAGES_COLLECTION_NAME)
.whereEqualTo(Constants.CHAT_ID, chatId)
.whereLessThan(Constants.MESSAGE_TIME, itemAtFront.time)
.orderBy(Constants.MESSAGE_TIME, Query.Direction.DESCENDING)
.limit(pageSize)
.get().addOnCompleteListener(createMessageCallback(it))
}
}
我只是反转我的布局管理器
layoutManager.reverseLayout = true
一切都很顺利