在开发的过程中,我们使一般会经常使用ListView,那么就会用到下拉刷新和上拉加载,我下载了XListView的框架,然后仔细分析了里面的原理,并且在原来的基础之上,增加了自己的想法,希望大家给出宝贵的建议,互相学习和探讨。
下载地址:http://download.csdn.net/detail/forwardyzk/7262781
下面先大概介绍一下开发思路:
以上是基本类的大体的框架
总结:
1.使用了自定义控件,重写了继承系统类。把头部,底部,和控件本身进行了封装。
2.在各个类进行操作的时候,使用了标记来表示不同的状态,然后对不同的状态的操作进行封装了方法。
3.在调用的时候封装了回调函数。在控件的本身类进行回调函数的实现。
4.增加了在静止的时候,使用了匿名滚动事件对象,判断了当前的系统没有给设置滚动事件对象,那么就使用匿名的,在显示的是最后一项并且是静止的时候,那么就自动调用加载更多方法。
5.在处理顶部和底部不同状态时候,使用了LinearLayout.LayoutParams和setLayoutParams(lp)显示在不同的位置,并且使用了Scroller不断的控制控件滑动的位置。
使用XListView的步骤。
1.在XListViewActivity类中的onCreate()方法设置适配器,前提是自定义一个适配器(根据不同的需求进行优化),给mListView.setAdapter(mAdapter); 这你可以根据自己的设计,可以在不同的位置设置。
总之一句话:给mListView设置适配器。
2.重写onRefresh()方法,改变集合,然后更新适配器,这就是下拉刷新的操作
3.重写onLoadMore()方法,改变集合,然后更新适配器,这就是加载更多的操作
就这么简单使用完成了。
注意点:
在main.xml中
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:background="#f0f0f0"
- android:orientation="vertical" >
- <me.maxwin.view.XListView
- android:id="@+id/xListView"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:cacheColorHint="#00000000" >
- </me.maxwin.view.XListView>
- </LinearLayout>
一定要给XListView设置android:cacheColorHint="#00000000"属性
原因是:ListView是常用的显示控件,默认背景是和系统窗口一样的透明色,如果给ListView加上背景图片,或者背景颜色时,滚动时listView会黑掉。滚动时,列表里面的view重绘时,用的依旧是系统默认的透明色,颜色值为#FF191919,那么设置android:cacheColorHint="#00000000"就不会出现背景为黑的情况。
正常状态: 点击后的状态:
移动后的状态。
要是避免设置情况,就要设置android:cacheColorHint属性