【发布时间】:2019-07-31 06:39:09
【问题描述】:
我无法在 android 中更新我的 listAdapter 中的数据
我的适配器:
class Adapter(val viewModel: ConfirmViewModel,
private val uiDownloadManager: UiDownloadManager)
: ListAdapter<Comment, RecyclerView.ViewHolder>(MessageListDiffUtil()) {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
val viewItem = LayoutInflater.from(parent.context)
.inflate(R.layout.confirm_comment, parent, false)
return CommentHolder(viewItem)
}
override fun onBindViewHolder(viewHolder: RecyclerView.ViewHolder, position: Int) {
try {
viewHolder as CommentHolder
viewHolder.bind(getItem(position), uiDownloadManager)
} catch (e: Exception) {
e.printStackTrace()
}
}
}
class MessageListDiffUtil : DiffUtil.ItemCallback<Comment>() {
override fun areItemsTheSame(p0: Comment, p1: Comment): Boolean {
return p0.serverId == p1.serverId
}
override fun areContentsTheSame(p0: Comment, p1: Comment): Boolean {
return p0.serverId == p1.serverId
}
}
更新代码:
val c = Comment()
c.serverId = 5
c.text = "for test"
val l = listOf(c)
adapter.submitList(l)
不要在 recyclerview 中显示任何数据 发生的事情是当适配器第一次调用 submitList 时不呈现所有项目
【问题讨论】:
-
不,在 ListAdapter 中你不需要使用 notifyDataSetChanged()
标签: android listadapter