有时候项目需要能够自动下拉刷新,类似网易新闻的效果,网易新闻是更新时间超过半个小时,就会自动下拉刷新,listview自动下拉。这种交互在体验上非常不错。这里我对Xlistiew进行稍微修改,完成了自动下拉刷新。只需要调用setAutoRefreshing()方法即可。因为程序比较简单,因此就不介绍了,各位直接看源码吧!
---------------更新--------------
1:增加自动下拉动画
2:增加自动上拉加载更多
3:如果XListView正处于刷新状态,不触发XListView的刷新回调接口。
4:基于Github原生XListView进行更改
网上搜索几个基于XListView自动下拉刷新的时候,一种是请看链接的实现;
另外一种就是我以前的那种实现方式。
这两种实现方式都不是很完美,特别是第一种,在某些情况下会导致刷新不能停止。第二种我以前的实现比较呆板,没有动画。
以下是自动下拉刷新实现代码
private int record;
private Handler mAutoRefreshHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (mHeaderView.getVisiableHeight() > mHeaderViewHeight) {
if (mListViewListener != null) {
mListViewListener.onPullRefresh();
}
record = 0;
mHeaderView.setState(XListViewHeader.STATE_REFRESHING);
resetHeaderHeight();
removeMessages(AUTO_REFRESH);
} else {
updateHeaderHeight(record);
record = record + 10;
sendEmptyMessageDelayed(AUTO_REFRESH,40);
}
}
};
private void autoRefresh() {
if (mEnablePullRefresh && !mPullRefreshing){
mPullRefreshing = true;
mAutoRefreshHandler.sendEmptyMessage(AUTO_REFRESH);
}
}
源码地址更新