【问题标题】:PagingDataAdapter.refresh() not working after fragment navigation片段导航后 PagingDataAdapter.refresh() 不起作用
【发布时间】:2022-03-09 18:40:13
【问题描述】:

我在一个片段中使用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() 中初始化了适配器,因为我需要适配器来维护跨屏幕转换的加载数据。任何人都可以帮助我...

【问题讨论】:

    标签: android kotlin android-fragments android-paging-3


    【解决方案1】:

    我得到了错误... :))

    onCreate() 中,我将生命周期所有者的观察者设置为viewLifecycleOwner

    viewLifecycleOwner 仅在onCreateView()onDestroyView() 之间有效。所以在导航到不同的片段并从那里返回后,新的观察者没有设置。由于生命周期所有者被销毁,旧的观察者被取消。所以我可以刷新PagingDataAdapter中的更多数据。

    在设置观察者时,请重新考虑要使用哪个生命周期所有者。希望这可能对某人有所帮助。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-18
      • 2020-11-01
      相关资源
      最近更新 更多