【发布时间】:2021-02-05 01:52:42
【问题描述】:
我对链接到 LiveData 的 RecyclerView 有疑问。每次有更新时,RecyclerView 内容都会一直备份到顶部。
显然问题出在我创建适配器的方式上,因为 Observer 每次都在变化。或者我是这么理解的。那个观察者被困在一个 lambda 中,这是我仍然非常熟悉的许多事情之一。
这显然是问题所在:
languagesViewModel.getLanguagesForUser().observe ( viewLifecycleOwner, { languages ->
LANGUAGES_SCREEN_VIEWS.languagesRecyclerView.adapter = LanguagesRecyclerViewAdapter ( languages ) } )
我试图从中得到一些东西,但它没有用......
我的第一次尝试是这样的:
var languageAdapter = LANGUAGES_SCREEN_VIEWS.languagesRecyclerView.adapter
languagesViewModel.getLanguagesForUser().observe( requireActivity(), { languages ->
languageAdapter = LanguagesRecyclerViewAdapter(languages) } )
有一个警告,变量已分配但从未访问过,语言列表为空。
我的第二次尝试是这样的:
val languages = mutableListOf < LanguagesEntity > ()
var languagesAdapter = LanguagesRecyclerViewAdapter(languages)
languagesViewModel.getLanguagesForUser().observe( requireActivity(), { languages ->
LANGUAGES_SCREEN_VIEWS.languagesRecyclerView.adapter = languagesAdapter } )
我希望很清楚,不幸的是我不知道我应该做什么。不是因为缺乏尝试,因为我在寻求帮助之前在黑暗中刺了三天,显然这就是问题所在的代码部分。如果我也找到解决方案,我会尝试回答我自己未回答的问题。这次不会发生了。
【问题讨论】:
-
您可能想查看stackoverflow.com/help/how-to-ask 您在“非常感谢您提前”之前的最后声明。很差。
-
注意到 :-) 它确实来自凌晨 2 点的挫败感,以及之前在相关问题上的奇怪互动。
标签: android kotlin android-livedata mutablelivedata