Android ListView下拉刷新、上拉载入更多(改良版)
来源:互联网 发布:手机版收银软件 编辑:程序博客网 时间:2024/05/16 10:09
原文地址:http://www.eoeandroid.com/thread-297264-1-1.html
前言:找下拉刷新,上拉加载的demo找了好久,踩找到这个相对完美的。所以分享给大家。
先看原版的话可以去这里 .这个组件很强大,下面给各位看官介绍下。
git地址
source code: https://github.com/Maxwin-z/XListView-Android
这是接触Android开发后写的第二个控件。话说下拉刷新组件网上就有好多版本,但我找到的两个(其中一个是 johannilsson的,国内很多就翻译的这个版本),效果都不是特别满意,关键还有bug(不至于crash,但是用户体验不好)
XListView,为毛叫X,因为它提供了“下拉刷新”和“上拉载入更多”两个功能,不想取PullDownRefreshAndPullUpLoadListView这种名字。
说下原理和碰到的问题,具体细节请到github下源码。
1. 下拉刷新组件是ListView的一个Header。在ListView创建时就将这个自定义View塞进去,默认情况是看不到的,所以这个HeaderView的高度初始设置为0。
2. 上拉载入更多组件是Footer,为了确保这个footer在最后(可能会添加多个自定义footer),在用户调用setAdatper的时候再把这个footer塞进去。
3. 覆写ListView的onTouchEvent方法,处理各种情况。
4. 用户松手,启动mScroller,将header、footer回滚到所需状态。
5. 添加了用户下拉、上拉移动delay的效果,类似iOS的行为。
6. 提供了两个接口:
a) IXListViewListener: 触发下拉刷新、上拉载入更多
b) OnXScrollListener: 这个和原生的OnScrollListener一样,但是在mScroller回滚时,也会触发这里的事件。
1. 用户下拉回推时,不断修改header的高度,但这时候滚动条指示器的位置还是按老的高度计算的,需要强制调用一下setSelection(0)将ListView滚动到顶部。
贴几张效果图:
下拉刷新
上拉载入更多
经测试上面的例子还有一个问题问题:
问题:当最开始数据不能撑满屏幕的时候,也就是比如有1条,那么将ListView向上拉不会完美刷新,必须将底部的view拉出屏幕才可以刷新
解决方法:在XListView的onTouchEvent方法中,将执行加载操作判断一下就可以了,大概从280行的位置开始。
新的问题:经网友反馈,修改后的程序存在一些bug,现在已经修改并重新上传源码。
注:以上文字内容是在其他文章上修改而来,原文地址:
http://linglong117.blog.163.com/blog/static/277145472012112812812378/
很多网友反映下载积分太高,现将文件上传到百度云网盘,以供更多的初学者学习使用。百度网盘下载链接:http://pan.baidu.com/s/1gd1fjmN
0 0
- Android ListView下拉刷新、上拉载入更多(改良版)
- Android ListView下拉刷新、上拉载入更多
- Android ListView下拉刷新、上拉载入更多[转]
- Android中ListView下拉刷新、上拉载入更多示例
- Android ListView下拉刷新、上拉载入更多
- android listview下拉刷新上拉加载更多改良为自己
- ListView下拉刷新、上拉载入更多之封装改进
- ListView下拉刷新、上拉载入更多之封装改进
- Android ListView 下拉刷新 上拉更多
- android listview 下拉刷新,上拉更多
- Android ListView 下拉刷新 上拉更多
- Android中ListView(下拉刷新、上拉载入更多)的示例-XListView控件实现
- XlistView下拉刷新,上拉加载更多改良
- Android ListView 下拉刷新 上拉更多[实例]
- Android ListView 下拉刷新 上拉更多[实例]
- android ListView下拉刷新上拉加载更多
- Android下拉刷新上拉加载更多ListView控件
- Android ListView下拉刷新上拉加载更多的实现
- OPENCV 反向投影的理解
- 黑马程序员学习日记(5)——文件批量重命名程序:One Click - Run()的实现
- SQL学习语法基础(二)
- 无比强大!Python抓取cssmoban网站的模版并下载
- Android新浪微博客户端(二)——添加多个账户及认证
- Android ListView下拉刷新、上拉载入更多(改良版)
- Java annotation 注解
- 黑马程序员----------面向对象三个权限修饰符
- 一步一步写算法(之单向链表)
- Android新浪微博客户端(三)——添加多个账户及认证
- 转:一步一步写算法(之通用算法的编写)
- 常见Sqlite管理工具
- 一步一步写算法(之链表重合)
- eclipse 安装反编译工具 JadClipse