我在一个片段中使用PagingDataAdapter
来显示用户活动。在片段类级别,
private var activityAdapter: ActivityFeedAdapter? = null
在onCreate()
中,我在使用前初始化为,
activityAdapter = initAdapter()
同样在onCreate()
中,
this.lifecycleScope.launchWhenResumed {
viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
viewModel.getActivityFeed().observe(viewLifecycleOwner) {
it?.let {
activityAdapter?.submitData(lifecycle, it)
}
}
}
}
和onStart()
之后,我在视图上设置了一个单击侦听器,以便从UI中刷新pagingdata
,
binding?.refresh?.setOnClickListener {
activityAdapter?.refresh()
}
当我第一次加载时,一切都工作正常。但在我导航到某个片段并回到同一屏幕后,单击刷新只处理单击事件,而不刷新适配器。
顺便说一句,我已经在onCreate()
中初始化了适配器,因为我需要适配器在屏幕转换中维护加载的数据。有人能帮助我吗...
1条答案
按热度按时间csbfibhn1#
我得到了错误...:))
在
onCreate()
中,我将观察者和生命周期所有者设置为viewLifecycleOwner
。但是
viewLifecycleOwner
只在onCreateView()
到onDestroyView()
之间是活动的。所以在导航到不同的片段并从那里返回之后,新的观察者没有被设置。旧的观察者由于生命周期所有者被破坏而被取消。所以我可以刷新PagingDataAdapter
中的更多数据。当设置观察者时,请重新考虑要使用哪个生命周期所有者。希望这可能会对某些人有所帮助。:)