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
相关文章推荐
- 获取android控件的大小
- Android中使用Vectors(2)绘制优美的路径动画
- Android安全–ELF文件格式解析
- Android的线程和线程池
- android中tesseract-ocr的介绍
- android:imeOptions属性 (转载)
- android应用程序静态分析工具androguard初体验(二)
- Android推送技术研究
- Android布局案例之人人android九宫格
- android布局优化
- Android 开发绕不过的坑:你的 Bitmap 究竟占多大内存?
- 4.10 从头学Android之多媒体--使用MediaPlayer和SurfaceView播放视频
- android 常用动画
- Android M 新的运行时权限开发者需要知道的一切
- ubuntu 下androidsdk 更新
- android apk 源码 的 破译(反编译)
- android倒计时控件示例
- android:layout_weight权重分析
- Android 壁纸设置代码 详解
- android收起软键盘