标签:
我们经常能见到 app 中的 listview 有“下拉更多”和“上拉加载”的效果。如下图所示顶部和底部的变化:
图 1 常见的 Header 和 Footer
(左:顶部的三个状态;右:底部的三个状态)
很明显,无论是下拉还是上拉,顶部和底部都会有三个状态。如,
因此,listview 顶部和底部一共需要六个状态:“下拉刷新”、“松开刷新数据”、“正在加载...”、“上次更新时间:”、“查看更多”、“松开载入更多”。
需要在拉动 listview 时,能分别改变顶部和底部状态。这样,至少需要自定义三个类:自定义的 listview、header 和 footer。
而且 listview 要能知道用户拉动的高度是多少,事先会预定一个高度,比如,如果仅仅“下拉”一点,那么就提示“下拉刷新”;如果超过预定高度,就提示“松开刷新”,此时,要改变箭头的方向。
为了让自己的 Activity 或 Fragment 能使用封装的 listview,还需要定义一个接口。这样,只要继承这个接口,就能使用封装的 listview。
图 2 XListView UML 图
看结构后,再看 public 方法,你就能大概了解该控件的思路。
Android github XListView 分析(2-3)
标签:
原文地址:http://www.cnblogs.com/liuning8023/p/4226800.html