ListView下拉刷新实现方式分析
1.添加顶部下拉加载界面。
2.监听onScrollListener,来判断当前是否在ListView最顶部。
3.监听onTouch事件,根据手势变化改变当前状态以及界面显示。
4.根据当前状态加载数据。
android.layout.simple_list_item_1:安卓自带的简单textView控件,可用在listView的数据源ArrayAdapter上。
下拉刷新控件源代码:
public class ReFreshListView extends ListView implements AbsListView.OnScrollListener{
View header;
int headerHeight; //顶部布局文件的高度
int firstVisibleItem; //当前第一个可见的item的位置
int scrollState; //listview当前滚动状态
boolean isRemark; //标记当前是否是在listview最顶端按下的
int startY; //按下时的Y值
int state; //当前的状态
final int NONE = 0; //正常状态
final int PULL = 1; //下拉状态
final int RELEASE = 2; //提示释放
final int REFRESHING = 3;//正在刷新
IRefreshListener iRefreshListener;//刷新数据的接口
public ReFreshListView(Context context) {
super(context);
initView(context);
}
public ReFreshListView(Context context, AttributeSet attrs) {
super(context, attrs);
initView(context);
}
public ReFreshListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initView(context);
}
/**
* 添加顶部布局文件
* */
private void initView (Context context){
LayoutInflater inflater = LayoutInflater.from(context);
header = inflater.inflate(R.layout.header_refresh,null);
measureView(header);
headerHeight = header.getMeasuredHeight();
topPadding(-headerHeight);
this.addHeaderView(header); //添加布局文件
this.setOnScrollListener(this);
}
/**
* 通知父布局占用的宽高
* @param view
*/
private void measureView(View