在我的 ViewModel 类中,我定义了分页列表配置
private val pagedListConfig: PagedList.Config = PagedList.Config.Builder().apply {
setEnablePlaceholders(true)
setInitialLoadSizeHint(10)
setPageSize(10)
}.build()
之后,我从我的房间数据库中检索我想在我的聊天室活动中显示的消息,这些消息给了我也从数据库中获取的 groupId,我进行了 switchMap 转换
private var groupChatItem = MutableLiveData<GroupChatItem>()
var chatRoomGroupMessages: LiveData<PagedList<MessageWithMsgQueueAccount>> =
Transformations.switchMap(groupChatItem) {
it?.let {
LivePagedListBuilder(
messagesRepository.retrieveChatRoomGroupMessages(
chatRoomServerId,
it.groupId
), pagedListConfig
).build()
}
}
到目前为止一切都很好。在这里,我想转换列表以公开列表列表,所以基本上我想通过函数将每个元素转换为一个元素。所以我需要的是第一个 LiveData 的 Transformation.map(),这样我就可以将其更改为另一个 LiveData。但问题是我想用分页列表来做。我怎样才能做到这一点?
var messageChatItems: LiveData<List<MessageChatItem>> = Transformations.map(chatRoomGroupMessages, messageChatItem -> {
// Here is where i need to call the function
})
fun convertGroupItemToMessageItem(): MessageChatItem {
// here i make the convertion
}