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

本文介绍了 XListView 控件的设计与实现原理,该控件具备下拉刷新和上拉加载更多功能,适用于 Android 开发。文章详细阐述了 XListView 的工作流程、如何集成到 ListView 中以及在实际使用中可能遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

​tag:android listview 下拉 刷新 上拉 更新 xlistview

      先看原版的话可以去这里 .这个组件很强大,下面给各位看官介绍下。

git地址

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

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

XListView,为毛叫X,因为它提供了“下拉刷新”和“上拉载入更多”两个功能,不想取PullDownRefreshAndPullUpLoadListView这种名字。

说下原理和碰到的问题,具体细节请到github下源码。

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滚动到顶部。

下拉刷新

   

上拉刷新

   

示例 http://download.youkuaiyun.com/detail/chen88358323/4743635


评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值