gpt4 book ai didi

android - 如何使用新的分页库实现 SwipeRefreshLayout

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:57:40 29 4
gpt4 key购买 nike

我有一个向用户显示项目列表的 Activity ,它使用了分页库。我的问题是当用户向下滑动屏幕时我无法重新加载列表,以便它再次从服务器获取数据。

这是我的数据源工厂:

public class CouponListDataSourceFactory extends DataSource.Factory {
private CouponListDataSource dataSource;

public CouponListDataSourceFactory(CouponRepository repository, String token, String vendorId) {
dataSource = new CouponListDataSource(repository, token, vendorId);
}

@Override
public DataSource create() {
return dataSource;
}
}

下面是我如何创建 PagedList

PagedList.Config config = new PagedList.Config.Builder()
.setInitialLoadSizeHint(15)
.setPageSize(10)
.build();
LiveData<PagedList<Coupon>> couponsLiveData = new LivePagedListBuilder<>(dataSourceFactory, config).build();

最佳答案

调用mDataSource.invalidate()方法后,mDataSource会失效,新的DataSource实例会通过DataSource.Factory.create()方法创建,所以提供每次在 DataSource.Factory.create() 方法中新建 DataSource() 实例,不要每次都提供相同的 DataSource 实例

mDataSource.invalidate() 不起作用,因为在失效之后,CouponListDataSourceFactory 提供相同的、已经失效的 DataSource 实例。

修改后 CouponListDataSourceFactory 将看起来像下面的示例,调用 mCouponListDataSourceFactory.dataSource.invalidate() 方法将刷新或者而不是保留 dataSource 实例在工厂内部,我们可以在 LiveData< PagedList < CouponModel >>.getValue().getDataSource().invalidate()

上调用 invalidate 方法
public class CouponListDataSourceFactory extends DataSource.Factory {

private CouponListDataSource dataSource;

private CouponRepository repository;
private String token;
private String vendorId;

public CouponListDataSourceFactory(CouponRepository repository, String token, String vendorId) {
this.repository = repository;
this.token = token;
this.vendorId = vendorId;
}

@Override
public DataSource create() {
dataSource = new CouponListDataSource(repository, token, vendorId);
return dataSource;
}
}

关于android - 如何使用新的分页库实现 SwipeRefreshLayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50074882/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com