ListView上拉刷新_下拉加载更多实例
2015-11-11 19:57:43  By: shinyuu

一、场景

本文将分享一个下拉刷新和上拉加载更多的Demo、一直在项目中使用的也是这个、效果非常不错、如果有想看原版的哥们、可以去这里、这个组件很强大、下面给各位看官介绍下贴几张效果图、下拉刷新和上拉加载更多

listview 下拉刷新 listview 上拉加载更多


git地址 source code: https://github.com/Maxwin-z/XListView-Android

这是接触Android开发后写的第二个控件、话说下拉刷新组件网上就有好多版本、但我找到的两个(其中一个是 johannilsson的、国内很多就翻译的这个版本)、效果都不是特别满意、关键还有bug(不至于crash、但是用户体验不好)


二、使用方法

XListView、为毛叫X、因为它提供了 “下拉刷新” 和 “上拉载入更多” 两个功能、不想取 PullDownRefreshAndPullUpLoadListView 这种名字、说下原理和碰到的问题、具体细节请到github下源码

1、 XListView继承ListView


2、下拉刷新组件是ListView的一个Header、在ListView创建时就将这个自定义View塞进去、默认情况是看不到的、所以这个HeaderView的高度初始设置为0


3、上拉载入更多组件是Footer、为了确保这个footer在最后(可能会添加多个自定义footer)、在用户调用setAdatper的时候再把这个footer塞进去


4、覆写ListView的onTouchEvent方法、处理各种情况


5、用户松手、启动mScroller、将header、footer回滚到所需状态


6、添加了用户下拉、上拉移动delay的效果、类似iOS的行为


7、提供了两个接口

a) IXListViewListener: 触发下拉刷新、上拉载入更多

b) OnXScrollListener: 这个和原生的OnScrollListener一样、但是在mScroller回滚时、也会触发这里的事件


三、碰到的问题

1、用户下拉回推时、不断修改header的高度、但这时候滚动条指示器的位置还是按老的高度计算的、需要强制调用一下setSelection(0)将ListView滚动到顶部


2、经测试上面的例子还有一个问题问题、当最开始数据不能撑满屏幕的时候、也就是比如有1条、那么将ListView向上拉不会完美刷新、必须将底部的view拉出屏幕才可以刷新

解决方法:在XListView的onTouchEvent方法中、将执行加载操作判断一下就可以了、大概从280行的位置开始


最后给贴上Demo的源代码、希望对大家有用、有兴趣的哥们可以下载看看

源代码下载链接: http://dwtedx.com/download.html?bdkey=s/1eQtyx0m 密码: qmij

若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


快速评论


技术评论

  • 该技术还没有评论、赶快抢沙发吧...
DD记账
top
+