XListView实现下拉刷新和上拉加载

在做项目的时候,用了XListView实现下拉刷新和上拉加载,XListView用法简单但强大。下面就简单介绍一下如何使用

一:下载XListView,gittub的下载地址是:https://github.com/Maxwin-z/XListView-Android。

下载解压如下图

XListView实现下拉刷新和上拉加载_第1张图片

然后将这个文件引入项目中,与你的项目关联起来,如果不懂引用第三方库,请看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,所有消耗线程的都在这里实现。因为代码比较简单,注释都在上面了。


效果图

XListView实现下拉刷新和上拉加载_第2张图片

XListView实现下拉刷新和上拉加载_第3张图片XListView实现下拉刷新和上拉加载_第4张图片XListView实现下拉刷新和上拉加载_第5张图片


代码下载地址:http://download.csdn.net/detail/a_person_alone/9469775

你可能感兴趣的:(xListView)