现在的位置: 首页 > 综合 > 正文

Android ListView下拉刷新、上拉载入更多

2018年05月11日 ⁄ 综合 ⁄ 共 890字 ⁄ 字号 评论关闭

找下拉刷新,上拉加载的demo找了好久,踩找到这个相对完美的。所以分享给大家

https://github.com/Maxwin-z/XListView-Android


0.
XListView继承ListView。

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/

抱歉!评论已关闭.