【问题标题】:How to get pagedlist size in android when using paging library with mvvm使用带有 mvvm 的分页库时如何在 android 中获取分页列表大小
【发布时间】:2020-07-01 00:30:52
【问题描述】:

拜托,我正在使用带有改造和分页库的 android MVVM,问题是我无法获得 pagedlist 的大小。 pagedlist = 0 始终在 UI 中。

下面的代码是我获取列表大小的方式。

 private void getAllAds() {
        userHomeViewModel.getHomeAllAdsPagedList().observe(this, new Observer<PagedList<AllAdsModel>>() {
            @Override
            public void onChanged(PagedList<AllAdsModel> list) {
                allAdsModelPagedList = list;
                Toast.makeText(AllAdsActivity.this, ""+list.size(), Toast.LENGTH_SHORT).show();
                //list.size = 0!!!!
                initUserAllAds();
            }
        });
    }

【问题讨论】:

  • list 有返回的东西吗,不是分页库问题;是你错误配置了Paging List,或者Retrofit没有数据进来
  • 感谢您的回复,对于您的信息,RecyclerView 可以很好地显示数据,但是如果我想知道列表的大小,它 = 0!实际上数据看起来不错,如果我知道pagedlist的大小,很多其他问题都会消失..
  • 你在这个observer 中用PagedList 设置RecyclerView 吗?
  • 我不使用/不知道观察者
  • adapter.submitList(allAdsModelPagedList);这个里面初始化receylerview

标签: android design-patterns mvvm paging pagedlist


【解决方案1】:

PagedList 是增量加载的,所以它的size 会随着时间的推移而改变,并且在调用submitList 之前总是为0(禁用占位符),并且它已经有机会加载一些项目。

您应该考虑利用 PagedListAdapter 上的 API。

如果您对当前显示列表的当前大小感兴趣,可以使用PagedListAdapter.currentList.size

如果您想在出现新的PagedList 时收到通知,您可以使用PagedListAdapter.onCurrentListChanged。此方法在初始加载和 diffutil 运行后调用,因此与新的PagedList 出现时同步。

请注意,PagedList.size 包含占位符。如果您启用了占位符,但您只对加载的项目感兴趣,您应该使用PagedList.loadedCount

【讨论】:

  • 感谢您的帮助。
  • 你的意思是在第一次加载时不可能知道 PagedList 的大小?
  • 您可以在初始加载后检查显示的大小,但要知道分页列表的完整大小,您需要完成所有页面的加载或有其他获取/知道大小的方法。
猜你喜欢
  • 2020-02-24
  • 1970-01-01
  • 2019-02-23
  • 2018-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多