mQuickAdapter.openLoadMore(PAGE_SIZE, true);
看你的代码中有这一句。而且不加这一句,加载更多就无效。直接设置mQuickAdapter.openLoadMore( true);也无效。
现在的问题是,我设置了mQuickAdapter.openLoadMore(10, true); 然后,第一次可以加载更多,然后第二次上拉的时候,就一直转圈圈,不消失,也没有更新数据了。
`
adapter.openLoadMore(10, true);
adapter.setOnLoadMoreListener(() -> {
LogUtils.e("上拉加载更多 ");
//上拉加载更多
Observable.timer(2, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(time -> {
LogUtils.e("上来加载数据了啦啦啦啦啦啦啦啦啦啦啦");
final List data = adapter.getData();
final List<Bean> newData = RvDataUtils.updateData(data.size(), 10); // 这个方法每次返回的数据的长度:list.size()==10;
final boolean b = data.addAll(data.size(), newData);
if (b) {
adapter.setNewData(data);
} else {
throw new RuntimeException("data has not changed");
}
}, onError);
`
通过log发现,第二次上拉刷新的时候,根本就没有输出上面的两个log。求解
另外,我发现,如果在adapter.setOnLoadMoreListener(() -> { // do nothing}); ,中,不做任何的操作,结果就一直显示"正在加载中..."不消失,有什么方法类似SwipeRefreshLayout#setRefreshing(false);来表示刷新结束,也好收起"正在加载中..."的View这样子的。求指导
还是没有明白你的Page_Szie到底是要传什么。是增加的数据的长度,还是更新后的数据长度,还是什么呢?真的好困惑啊。现在,我将加载更多的代码改成:
`
//########## load more
final List data = adapter.getData();
final List<Bean> newData = RvDataUtils.updateData(data.size(), 10); // 这个方法每次返回的数据的长度:list.size()==10;
final int pageSize = data.size() + newData.size();
LogUtils.e("page size = == " + pageSize);
adapter.openLoadMore(pageSize, true);
adapter.setOnLoadMoreListener(() -> {
LogUtils.e("上拉加载更多 ");
SuperToast.cancelAllSuperToasts();
SuperToast.create(getApplicationContext(), "上拉加载更多", SuperToast.Duration.MEDIUM).show();
//上拉加载更多
Observable.timer(2, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(time -> {
LogUtils.e("上来加载数据了啦啦啦啦啦啦啦啦啦啦啦");
final boolean b = data.addAll(data.size(), newData);
if (b) {
adapter.setNewData(data);
} else {
throw new RuntimeException("data has not changed");
}
}, onError);
});`
改成这样之后,上拉直接不刷新了。
我的想法是,如果是一个通用的库,应该有更简单的使用方式。
我知道了,你的page_size是表示,增加的数据的长度的。然后需要调用adapter.notifyDataChangedAfterLoadMore(newData, true);表示加载结束。但是,你应该在文档中写清楚啊,不如大家怎么知道怎么用,对不对?
我也是看不明白这个加载更多是什么鬼
嗯,如我上面所说,加载更多需要需要调用adapter.openLoadMore(pageSize, true);先。其中pageSize == 本次加载增加的数据长度。并且,在加载完成的时候,需要调用adapter.notifyDataChangedAfterLoadMore(newData, true);。这样就可以愉快的加载更多了。
加载更多到底是怎么触发的?滑动到底部自己触发?
是的,就是在滑动到底部的时候触发的,不过前提是,你调用了
adapter.openLoadMore(10, true);
adapter.setOnLoadMoreListener(listener);
这两句
正解
Most helpful comment
我也是看不明白这个加载更多是什么鬼