我有一个活动,向用户显示项目列表,并使用分页库.我的问题是,当用户向下滑动屏幕时,我无法重新加载列表,以便它再次从服务器获取数据.
这是我的DataSource Factory:
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将在下面的smple中看起来,并且调用mCouponListDataSourceFactory.dataSource.invalIDate()方法将进行刷新,或者不是将dataSource实例保留在工厂内,我们可以在liveData上调用invalIDate方法< PagedList< CouponModel> > .getValue()了getDataSource()无效()
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;}@OverrIDepublic DataSource create() { dataSource = new CouponListDataSource(repository, token, vendorID); return dataSource;}}
总结 以上是内存溢出为你收集整理的android – 如何使用新的Paging Library实现SwipeRefreshLayout全部内容,希望文章能够帮你解决android – 如何使用新的Paging Library实现SwipeRefreshLayout所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)