您的位置:首页 > 移动开发 > Android开发

android :自定义listview,下拉刷新,上拉加载

2016-03-08 11:07 447 查看

思路大体如下:

1 自定义view,继承自listview,实现OnScrollListener接口。

2 初始化数据init();  目的主要是:

  (1)加载headerView 和footerView。其中,headerView的添加,需要先计算并获取布局的高度。设置其paddingTop的值后重绘,最后addheaderView()。

footerView稍微简单点,直接addfooterView即可。

 (2)设置onscrollListener监听,用于监听onscroll状态,以便判断需要下拉刷新还是上拉加载。

3 重写onTouchEvent()事件,用于下拉刷新。大体思路如下:

  先记录按下去的y坐标值。监听ACTION_MOVE,手势向下滑动,通过不断修改setpadding(0,top,0,0)中的top值,不断将headerview显示出来。当触发ACTION_UP事件,状态改为正在刷新状态。同时触发监听中的onRefresh()事件。

4stateChange()用于根据不同的状态显示不同的UI。

private static final int STATE_NONE = -1;// 无状态
private static final int STATE_NORMAL = 0;// 默认状态
private static final int STATE_REFRESHING = 1;// 正在刷新
private static final int STATE_WAITING_REFRESH = 2;// 松开刷新
private static final int STATE_NO_LOADMORE = 3;// 没有更多数据了
private static final int STATE_LOADING = 4;// 正在加载

5 完成刷新或加载更多,都需要调用onRefreshComplete(),目的是重置view的状态。


6 如果加载更多全部完成,可以调用onLoadMoreComplete(),用于显示没有更多数据了。

由于本人将onRefreshComplete()用于刷新和加载更多的状态重置,所以添加了neverLoadMore标识,目的是重新刷新数据后支持加载更多。
后期如果发现有什么bug,我会陆续修改。
附上demo
http://yun.baidu.com/share/link?shareid=4091291889&uk=2115601722
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: