[关闭]
@natsumi 2017-01-13T02:09:23.000000Z 字数 985 阅读 1310

【转】怎样实现SwipeRefreshLayout的自动刷新?一打开页面就自动刷新加载的效果

Android


作者:贾艺驰
链接:http://www.zhihu.com/question/35422150/answer/62695696
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


首先想要在界面一加载的时候出现更新效果,直接调用setRfreshing(true)是出不来效果的,这个问题我以前也遇到过,必须调用

  1. SwipeRefreshLayout.post(new Runable(){
  2. @Override
  3. public void run() {
  4. SwipeRefreshLayout.setRefreshing(true);
  5. }
  6. });

关闭的时候也使用

  1. SwipeRefreshLayout.post(new Runable(){
  2. @Override
  3. public void run() {
  4. SwipeRefreshLayout.setRefreshing(false);
  5. }
  6. });

但是如果你认为这样就会走onRefresh方法,那你就大错特错了,setRefreshing(true)是不会触发onRefresh的,必须要手动调用一次
所以在界面onCreate里面想要立刻加载就需要这样

  1. SwipeRefreshLayout.post(new Runable(){
  2. @Override
  3. public void run() {
  4. SwipeRefreshLayout.setRefreshing(true);
  5. }
  6. });
  7. onRefresh();

初始化:

  1. OnRefreshListener listener = new OnRefreshListener(){
  2. public void onRefresh(){
  3. //TODO
  4. }
  5. };
  6. SwipeRefreshLayout mSRLayout = (SwipeRefreshLayout) findviewbyId(R.id.layout);
  7. mSRLayout.setOnRefreshListener(listener);

onCreate中:

  1. mSRLayout.post(new Runable(){
  2. @Override
  3. public void run() {
  4. SwipeRefreshLayout.setRefreshing(true);
  5. }
  6. });
  7. listener.onRefresh()
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注