在Android中使用分页时如何启用占位符?

时间:2019-08-14 08:58:38

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

我正在尝试从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)时,没有任何反应,没有显示占位符。有人可以帮助我显示占位符吗?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

添加对占位符的支持之前,请记住以下前提条件

  1. 需要可计数的数据集:Room持久性库中的DataSource实例可以有效地计数其项目。但是,如果您使用的是自定义本地存储解决方案或仅基于网络的数据体系结构,则可能很昂贵,甚至无法确定组成数据集的项目数量

  2. 需要适配器来说明已卸载的物品:用于准备通货膨胀清单的适配器或显示机制需要处理空列表物品。例如,将数据绑定到ViewHolder时,您需要提供默认值来表示已卸载的数据。

  3. 需要相同大小的项目视图:如果列表项的大小可以根据其内容(例如社交网络更新)进行更改,则项目之间的淡入淡出效果并不理想。 我们强烈建议在这种情况下禁用占位符