PullScrollView,PullListView, PullGridView 等进入自动下拉刷新

来源:互联网 发布:西安网络推广外包 编辑:程序博客网 时间:2024/06/16 05:11

看这个解决方法的前提是你已经使用过pull_library的架包
关于这个问题,开始我查过资料发现都不是很理想,下边通过自己研究整理出一个解决方案供参考,如有更好的方法欢迎交流指正。
其实PullScrollView,PullListView,PullGridView等下拉自动刷新都是类似的,下边就以PullScrollView为例说明,废话不多说,直接上代码:

import android.content.Context;import android.os.Handler;import android.util.AttributeSet;import com.handmark.pulltorefresh.library.PullToRefreshScrollView;public class CustomPullToRefreshScrollView extends  PullToRefreshScrollView{    /**     * 默认等待时间     */    private static final long DEFAULT_DELAYMILLIS = 300;    private Handler handler;    public CustomPullToRefreshScrollView(Context context) {        super(context);    }    public CustomPullToRefreshScrollView(Context context, AttributeSet attrs) {        super(context, attrs);    }    public CustomPullToRefreshScrollView(Context context, Mode mode) {        super(context, mode);    }    public CustomPullToRefreshScrollView(Context context, Mode mode, AnimationStyle style) {        super(context, mode, style);    }    /**     * 首次进入实现自动刷新     * @author ttarfall     * @date 2015-7-10 下午4:40:01     */    public void setAutoRefreshing() {        setAutoRefreshing(DEFAULT_DELAYMILLIS);    }    /**     * 自动下拉刷新     * @author ttarfall     * @date 2015-7-20 2015-7-20     * @param delayMillis 自动启动前等待时间     */    public void setAutoRefreshing(long delayMillis) {        setRefreshing(delayMillis, Mode.PULL_FROM_START);    }    /**     * 设置自动上拉刷新     * @author ttarfall     * @date 2015-8-10 上午10:02:02     */    public void setAutoUpRefreshing() {        setAutoUpRefreshing(DEFAULT_DELAYMILLIS);    }    /**     * 自动上拉刷新     * @author ttarfall     * @date 2015-8-10 上午10:15:38     * @param delayMillis 等待时间     */    public void setAutoUpRefreshing(long delayMillis) {        setRefreshing(delayMillis, Mode.PULL_FROM_END);    }    private void setRefreshing(long delayMillis, Mode mode) {        if(delayMillis<DEFAULT_DELAYMILLIS)            delayMillis = DEFAULT_DELAYMILLIS;        getHeaderAndFooter(delayMillis, mode);    }    /**     * 根据状态决定是否启动自动刷新     * @param delayMillis     * @param mode     */    private void getHeaderAndFooter(long delayMillis, final Mode mode){        if (handler == null)            handler = new Handler();        handler.postDelayed(new Runnable() {            @Override            public void run() {                switch (mode) {                    case PULL_FROM_START:                        if (getHeaderSize() == 0) {                            getHeaderAndFooter(DEFAULT_DELAYMILLIS, mode);                        } else {                            startRefreshing(DEFAULT_DELAYMILLIS, mode);                        }                        break;                    case PULL_FROM_END:                        if (getFooterSize() == 0) {                            getHeaderAndFooter(DEFAULT_DELAYMILLIS, mode);                        } else {                            startRefreshing(DEFAULT_DELAYMILLIS, mode);                        }                        break;                    default:                        break;                }            }        }, delayMillis);    }    /**     * 启动自动刷新     * @param delayMillis     * @param mode     */    private void startRefreshing(long delayMillis, final Mode mode){        if (handler == null)            handler = new Handler();        handler.postDelayed(new Runnable() {            @Override            public void run() {                switch (mode) {                    case PULL_FROM_START:                        setCurrentMode(mode);                        smoothScrollTo(-getHeaderSize() * 2);                        setRefreshing();                        break;                    case PULL_FROM_END:                        setCurrentMode(mode);                        smoothScrollTo(getFooterSize() * 2);                        setRefreshing();                        break;                    default:                        break;                }            }        }, delayMillis);    }}

在Activity中代码:
refreshScrollView=(CustomPullToRefreshScrollView)findViewById(R.id.refreshScrollView);
refreshScrollView.setAutoRefreshing();
“`
注意:这里在PullToRefreshBase添加setCurrentMode的方法。

1 0
原创粉丝点击