【问题标题】:How to enable place holders when using pagination in Android?在 Android 中使用分页时如何启用占位符?
【发布时间】:2019-12-20 19:35:58
【问题描述】:

我在从 Firestore 获取数据时尝试显示占位符。这是我尝试过的:

class BarsViewModel extends AndroidViewModel {
    private PagedList.Config config;
    private BarSourceFactory factory;
    private LiveData<PagedList<Bar>> liveData;

    BarsViewModel(Application application) {
        super(application);

        config = new PagedList.Config.Builder()
                .setEnablePlaceholders(true) //Nothing happens
                .setPageSize("15")
                .build();

        factory = new BarSourceFactory();
        liveData = new LivePagedListBuilder<>(factory, config).build();
    }

    LiveData<PagedList<Bar>> getBarLiveData() {
        return liveData;
    }
}

当我添加 .setEnablePlaceholders(true) 时没有任何反应,不会显示占位符。有人可以帮我显示占位符吗?任何帮助将不胜感激。

【问题讨论】:

  • 占位符默认是启用的(见here),所以什么也没发生
  • @atarasenko 删除对.setEnablePlaceholders(true) 的调用不会改变任何内容。还有其他想法吗?

标签: android firebase google-cloud-firestore placeholder android-paging-library


【解决方案1】:

不过,在添加对占位符的支持之前,请记住以下先决条件

  1. 需要可计数的数据集:Room 持久性库中的 DataSource 实例可以有效地计算它们的项目。但是,如果您使用的是自定义本地存储解决方案或纯网络数据架构,则可能会很昂贵,甚至无法确定您的数据集包含多少项目

    李>
  2. 需要适配器来说明已卸载的项目:您用于为膨胀准备列表的适配器或表示机制需要处理空列表项目。例如,将数据绑定到 ViewHolder 时,需要提供默认值来表示未加载的数据。

  3. 需要相同大小的项目视图:如果列表项目大小可以根据其内容(例如社交网络更新)而变化,则项目之间的交叉淡化看起来不太好。 我们强烈建议在这种情况下禁用占位符

【讨论】:

  • 嗨,Rishabh,感谢您抽出宝贵时间回答我的问题。所以你基本上说不可能确定有多少项目来自 Firestore,这就是为什么我没有显示占位符?
  • 正确。您必须知道数据集的大小。当您不启用占位符时,滚动条会出现在您的列表中,当您到达列表底部时,将获取数据并滚动条移动它的位置。但是在数据大小不确定的情况下,滚动条不能设置到正确的位置。
  • 好的,但是有没有办法知道数据集的大小以便我可以显示这些占位符?
猜你喜欢
  • 2017-05-09
  • 2016-08-05
  • 2023-04-03
  • 2018-10-13
  • 2014-05-21
  • 1970-01-01
  • 2022-11-07
  • 1970-01-01
  • 2016-07-18
相关资源
最近更新 更多