谷歌官方的下拉刷新控件SwipeRefreshLayout(带自主刷新)

来源:互联网 发布:mvod.php怎么播放 编辑:程序博客网 时间:2024/05/21 01:55

众所周知,谷歌有一个自己的下拉刷新控件,没错!我说的就是v4包下的SwipeRefreshLayout,有时候会碰到一进入页面就实现下拉刷新一下的需求。参考链接:http://www.jianshu.com/p/8875a05c54ef

package com.example.administrator.demo.activity;import android.app.Activity;import android.graphics.Color;import android.os.Bundle;import android.os.Handler;import android.support.v4.widget.SwipeRefreshLayout;import android.widget.Toast;import com.example.administrator.demo.R;public class MainActivity extends Activity {    private SwipeRefreshLayout refreshLayout;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        new Handler().postDelayed(new Runnable() {            @Override            public void run() {                if (refreshLayout.isRefreshing()) {                    refreshLayout.setRefreshing(false);                    Toast.makeText(MainActivity.this,"自动加载完毕",Toast.LENGTH_SHORT).show();                }            }        },3000);        refreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {            @Override            public void onRefresh() {                new Handler().postDelayed(new Runnable() {                    @Override                    public void run() {                        refreshLayout.setRefreshing(false);                        Toast.makeText(MainActivity.this,"下拉刷新完毕",Toast.LENGTH_SHORT).show();                    }                },3000);            }        });    }    private void initView() {        refreshLayout = (SwipeRefreshLayout) findViewById(R.id.refreshLayout);        refreshLayout.setColorSchemeColors(Color.RED);    }    @Override    public void onWindowFocusChanged(boolean hasFocus) {        refreshLayout.setRefreshing(true);    }}

鉴于onWindowFocusChanged这个方法只有在Activity中有,那如果需要在Fragment中实现自主刷新呢?
下面的方法:

 ViewTreeObserver obeser=mSwipeRefreshLayout.getViewTreeObserver();        obeser.addOnWindowFocusChangeListener(new ViewTreeObserver.OnWindowFocusChangeListener() {            @Override            public void onWindowFocusChanged(boolean hasFocus) {                mSwipeRefreshLayout.setRefreshing(true);            }        });

在获取数据完成后设置刷新状态为false

if (mSwipeRefreshLayout.isRefreshing()) {                            mSwipeRefreshLayout.setRefreshing(false);                        }
0 0
原创粉丝点击