在做项目的时候,用了XListView实现下拉刷新和上拉加载,XListView用法简单但强大。下面就简单介绍一下如何使用
一:下载XListView,gittub的下载地址是:https://github.com/Maxwin-z/XListView-Android。
下载解压如下图
然后将这个文件引入项目中,与你的项目关联起来,如果不懂引用第三方库,请看http://blog.csdn.net/a_person_alone/article/details/50847823
二:代码段
布局文件mainxml,非常简单。
<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<me.maxwin.view.XListView
android:id="@+id/XlistView_ID"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:cacheColorHint="#00000000"
/>
</LinearLayout>
</span>
其中android:cacheColorHint是设置XlistView加载时底部不会有默认的颜色,即实现透明。
主文件MainActivity
<span style="font-size:18px;">package com.zengfeng.xlistview;
import java.util.ArrayList;
import me.maxwin.view.XListView;
import me.maxwin.view.XListView.IXListViewListener;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.ArrayAdapter;
public class MainActivity extends Activity implements IXListViewListener{
private XListView xListView;
//数据源
private ArrayList<String> items=new ArrayList<String>();
//匹配器
private ArrayAdapter<String> adapter;
//开始数据
private int start=0;
private static int refreshInt=0;
//刷新
private final int REFRESH_ACTION=1;
//加载
private final int LOAD_ACTION=2;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//对集合进行填充数据
add();
//初始化
xListView=(XListView) findViewById(R.id.XlistView_ID);
adapter=new ArrayAdapter<>(this, R.layout.list_item,items);
xListView.setAdapter(adapter);
//设为true,上拉加载有效
xListView.setPullLoadEnable(true);
//设为true,下拉刷新有效
xListView.setPullRefreshEnable(true);
//设置监听
xListView.setXListViewListener(this);
}
//对集合进行填充数据
private void add(){
for(int i=0;i!=20;++i){
items.add("refresh "+(++start));
}
}
//刷新加载完成调用的方式
private void onLoad() {
xListView.stopRefresh();
xListView.stopLoadMore();
xListView.setRefreshTime("刚刚");
}
@Override
//继承IXListViewListener,进行下拉刷新
public void onRefresh() {
//进行异步
new XlistViewAsyncTask().execute(REFRESH_ACTION);
}
@Override
//继承IXListViewListener,进行上拉加载更多
public void onLoadMore() {
//进行异步
new XlistViewAsyncTask().execute(LOAD_ACTION);
}
//异步加载类,跟新界面
private class XlistViewAsyncTask extends AsyncTask<Integer, Void, Void>{
@Override
protected Void doInBackground(Integer... params) {
switch (params[0]) {
case REFRESH_ACTION:
refresh();
break;
case LOAD_ACTION:
load();
break;
default:
break;
}
return null;
}
@Override
protected void onPostExecute(Void result) {
adapter.notifyDataSetChanged();
onLoad();
super.onPostExecute(result);
}
}
//下拉更新方法
private void refresh(){
start=++refreshInt;
//清除集合
items.clear();
//填充数据
add();
adapter = new ArrayAdapter<String>(MainActivity.this, R.layout.list_item, items);
xListView.setAdapter(adapter);
}
//上拉加载方法
private void load(){
add();
}
}</span>
MainActivity继承了IXListViewListener,并且实现了onRefresh()和onLoadMore()方法,这两个方法就是实现下拉刷新和上拉加载的,具体业务逻辑就在这里实现。主线程不能实现界面的更新,所以定义了一个XlistViewAsyncTask,所有消耗线程的都在这里实现。因为代码比较简单,注释都在上面了。
效果图
代码下载地址:http://download.csdn.net/detail/a_person_alone/9469775