Open yizems opened 3 years ago
我在Smart 的 demo 中尝试两种方法重现这个错误,都失败了。 方式一
mRefreshLayout.autoRefresh();//开始刷新数据时无数据
mClassicsHeader.setFinishDuration(0);//关闭Header的完成延时
mRefreshLayout.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
//刷新启动一秒后 关闭刷新并加载数据
refreshLayout.getLayout().postDelayed(()->{
refreshLayout.finishRefresh();
List<Item> items = new ArrayList<>();
items.addAll(Arrays.asList(Item.values()));
items.addAll(Arrays.asList(Item.values()));
mAdpater.refresh(items);
}, 2000);
}
});
方式二
mRefreshLayout.autoRefresh();//开始刷新数据时无数据
mClassicsHeader.setFinishDuration(0);//关闭Header的完成延时
mRefreshLayout.setOnRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh(@NonNull RefreshLayout refreshLayout) {
//刷新启动一秒后 关闭刷新
refreshLayout.getLayout().postDelayed(()->{
refreshLayout.finishRefresh();
}, 1000);
//启动刷新两秒后 添加数据
refreshLayout.getLayout().postDelayed(()->{
List<Item> items = new ArrayList<>();
items.addAll(Arrays.asList(Item.values()));
items.addAll(Arrays.asList(Item.values()));
mAdpater.refresh(items);
}, 2000);
}
});
建议先 notifyDataSetChanged 再 finishRefresh
如果你希望能解决这个问题并且有时间,可以新建一个 demo 项目,重现这个问题,并发邮件给我。
好的, 回头我新建项目看看能不能复现这个问题
当使用
autoRefresh()
后, 先调用finishRefresh()
, 后调用adapter.notifyDataSetChanged()
会出现这种情况如果先调用
adapter.notifyDataSetChanged()
后调用finishRefresh()
就没有问题配置: androidx