【发布时间】:2020-04-22 15:29:31
【问题描述】:
我有以下方法——
private fun initRoomObserving() {
dashboardViewModel = ViewModelProvider(this).get(DashboardViewModel::class.java)
dashboardViewModel.getAllMessagesEntities().observe(this, Observer { receivedMessageList ->
receivedMessageList.forEach {
if (!userPhoneNumber.equals(it.senderUsername)) {
it.isReceiver = true
}
if (!messagesList.contains(it)) {
messagesList.add(it)
}
}
conversationAdapter.notifyItemInserted(messagesList.size)
conversationAdapter.notifyItemRangeChanged(messagesList.size - 1,messagesList.size)
})
}
由于某种原因,每次添加新实体时都会重新呈现整个列表,即使我明确地是 notifyItemInserted 而不是 notifyDataSetChanged
为什么会发生这种情况,我错过了什么?
【问题讨论】:
-
试试
conversationAdapter.notifyItemRangeChanged(messagesList.size - 1,/*numberOfNewItems*/ someCount) -
新项目数总是1,什么是'some count'?
-
那么
someCount应该是1 -
已解决,请评论,我会批准
标签: android android-recyclerview notifydatasetchanged