CymChad / BaseRecyclerViewAdapterHelper

BRVAH:Powerful and flexible RecyclerAdapter
http://www.recyclerview.org/
MIT License
24.23k stars 5.15k forks source link

在加载更多时断网,怎么隐藏loadingView,让用户可以再次上拉加载. #180

Closed xuejingfei closed 8 years ago

xuejingfei commented 8 years ago

在加载更多时断网,怎么隐藏loadingView,让用户可以再次上拉加载.

CymChad commented 8 years ago

mQuickAdapter.notifyDataChangedAfterLoadMore(false); 隐藏 定时在开启 上拉刷新

xuejingfei commented 8 years ago

定时在开启 ..是什么意思?

xuejingfei commented 8 years ago

断网后调用mQuickAdapter.notifyDataChangedAfterLoadMore(false); 这个方法是隐藏不了loadingview.

CymChad commented 8 years ago

贴下你使用的代码

xuejingfei commented 8 years ago

private void showErrorView(String message) { ((TextView) errorView.findViewById(R.id.tv_message)).setText(message); adapter.setEmptyView(errorView); adapter.notifyDataSetChanged();

    adapter.notifyDataChangedAfterLoadMore(false);
    adapter.openLoadMore(10,true);
    ToastManager.shortToast(refreshLayout.getContext(),message);
}

这个是断网失败后,如果是adapter没值,显示erroView,如果有值就让他隐藏loadingView,然后打开,让用户可以重新上拉加载.

CymChad commented 8 years ago

你两个方法不能写在一块啊

xuejingfei commented 8 years ago

adapter.notifyDataChangedAfterLoadMore(false); adapter.openLoadMore(10,true);这两行代码吗?

CymChad commented 8 years ago

恩 不可以吗

xuejingfei commented 8 years ago

关键是只调用adapter.notifyDataChangedAfterLoadMore(false);这一行,成功加载第一页后,把网断了,然后再上拉,那个loadingView没有隐藏.导致把网连接以后,用户无法上拉加载,我用的是v1.8.5版本.

CymChad commented 8 years ago

你再上拉的时候,在调用adapter.notifyDataChangedAfterLoadMore(false);,这样就会隐藏了,然后你在 new Handler 定时 开启 这个监听事件。这样就又可以上拉了。

CymChad commented 8 years ago

mQuickAdapter.notifyDataChangedAfterLoadMore(false); new Handler().postDelayed(new Runnable() { @Override public void run() { mQuickAdapter.notifyDataChangedAfterLoadMore(true); } }, 3000);

xuejingfei commented 8 years ago

提个建议,是不是可以提供个方法,上拉加载完成的方法,无论加载成功还是加载失败,只是隐藏loadingView,上拉就初始化loadingView..

CymChad commented 8 years ago

无法判断,是否上拉加载完成了,只能让开发者主动触发notifyDataChangedAfterLoadMore方法,才能知道。

CymChad commented 8 years ago

用我给你的代码,你的问题解决了没?

xuejingfei commented 8 years ago

这个方法是不是得写在上拉监听方法里,还是写在加载失败的回调函数里.

CymChad commented 8 years ago

难道你的加载失败不是在上拉监听里面吗?理论上拉才去请求,然后请求失败就进去回调函数里面去了。

xuejingfei commented 8 years ago

是的,已经解决了.

CymChad commented 8 years ago

ok 感谢提问。

xuejingfei commented 8 years ago

感觉 new Handler().postDelayed(new Runnable() { @Override public void run() { mQuickAdapter.notifyDataChangedAfterLoadMore(true); } }, 3000);这个方法还是不应该让开发者初始化,这个应放在开源项目中.

usherjc commented 8 years ago

成功解决了多布局的问题~么么哒

CymChad commented 8 years ago

@xuejingfei 可以考虑加入