XListView上拉加载 AND 下拉刷新(带有更新时间)

首先是分析XListView({@XListView-Android-master.rar@}已加载)
项目图:

第一步:到官网下载第三方包,拷贝到自己的项目中(这里是自己拷贝进项目的,不是通过属性添加的)。要注意的地方是在
layout
String
drawable
下也有这个控件的配置信息,这个一定要考进去。 


第二步:布局文件(背景一定要设置成透明色)
<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>

第三步:代码实现
package me.maxwin;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import me.maxwin.view.XListView;
import me.maxwin.view.XListView.IXListViewListener;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.widget.ArrayAdapter;
public class XListViewActivity extends Activity implements IXListViewListener {
	/**
	 * 打印LOG的标签
	 */
	private static final String TAG = XListViewActivity.class.getSimpleName();
	private XListView mListView;
	private ArrayAdapter<String> mAdapter;
	private ArrayList<String> items = new ArrayList<String>();
	private Handler mHandler;
	private int start = 0;
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		mHandler = new Handler();
		geneItems();
		mListView = (XListView) findViewById(R.id.xListView);
		/*
		 * 几个常用方法: setPullRefreshEnable(boolean enable):是否允许下拉刷新
		 * setPullLoadEnable(boolean enable):是否允许上拉加载更多
		 * stopRefresh():停止刷新,重置header view stopLoadMore():停止加载更多,重置footer view
		 * 
		 * setRefreshTime(String time):设置上次刷新的时间
		 * onLoadMore():加载更多时调用的方法。注意第一次进入时不会调用此方法。 onRefresh():下拉刷新时调用的方法。
		 */
		mListView.setPullLoadEnable(true);
		mAdapter = new ArrayAdapter<String>(this, R.layout.list_item, items);
		mListView.setAdapter(mAdapter);
		// mListView.setPullLoadEnable(false);
		// mListView.setPullRefreshEnable(false);
		mListView.setXListViewListener(this);
	}
	private void geneItems() {
		for (int i = 0; i < 20; ++i) {
			items.add("refresh cnt " + (++start));
		}
		Log.i(TAG, "-------------->start = " + start);
	}
	/**
	 * //1、实现IXListViewListener接口 mListView.setXListViewListener(this);
	 * onRefresh中实现下拉刷新的数据加载
	 */
	@Override
	public void onRefresh() {
		mHandler.postDelayed(new Runnable() {
			@Override
			public void run() {
				geneItems();
				mAdapter.notifyDataSetInvalidated();
				onLoad();
			}
		}, 2000);
	}
	/**
	 * onLoadMore中实现上拉加载更多的数据加载
	 */
	@Override
	public void onLoadMore() {
		mHandler.postDelayed(new Runnable() {
			@Override
			public void run() {
				geneItems();
				// notifyDataSetChanged() 动态更新ListView
				mAdapter.notifyDataSetChanged();
				// 更新界面显示
				onLoad();
			}
		}, 2000);
	}
	/**
	 * 更新界面显示
	 */
	private void onLoad() {
		mListView.stopRefresh();
		mListView.stopLoadMore();
		// mListView.setRefreshTime("刚刚");
		SharedPreferences sp = XListViewActivity.this.getSharedPreferences(
				"RefreshTime", Context.MODE_PRIVATE);
		// 先读
		String time = sp.getString("time", "未知");
		// Log.e("time", time);
		mListView.setRefreshTime(time);
		// mListView.setRefreshTime("刚刚");
		Editor edit = sp.edit();
		edit.putString("time", getDate());
		// Log.e("time", getDate());
		edit.commit();
	}
	/**
	 * 设置时间
	 * @return
	 */
	private String getDate() {
		Date date = new Date();
		SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
		String str = format.format(date);
		return str;
	}
}

XListView在项目中使用:
1,把XlistVIew导入项目中:在属性里面的Library中导入(已添加{XListView})
2,开始编写代码:
XML中
<me.maxwin.view.XListView
        android:id="@+id/Main_XListV"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:cacheColorHint="#00000000" >
    </me.maxwin.view.XListView>

在java中:
package com.scort.receiver;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import me.maxwin.view.XListView;
import me.maxwin.view.XListView.IXListViewListener;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.ArrayAdapter;
import android.widget.Toast;
/**
 * 
 * @author Administrator
 *
 */
public class MainActivity extends Activity {
	private List<String> items ;
	private XListView xListView;
	private ArrayAdapter<String> adapter;
	private boolean newAdaper;
	private int index;
	private Handler mHandler;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		mHandler = new Handler();
		items = new ArrayList<String>();
		geneItems();
		xListView = (XListView) findViewById(R.id.Main_XListV);
		xListView.setPullLoadEnable(true);
		adapter = new ArrayAdapter<String>(MainActivity.this, R.layout.list_item, items);
		xListView.setAdapter(adapter);
		xListView.setXListViewListener(viewListener);
		
	}
	private void geneItems() {
		for (int i = 0; i < 20; ++i) {
			items.add("refresh cnt " + (++i));
		}
	}
 
	IXListViewListener viewListener = new IXListViewListener() {
		//下拉刷新
		@Override
		public void onRefresh() {
			mHandler.postDelayed(new Runnable() {
				@Override
				public void run() {
					geneItems();
					adapter.notifyDataSetInvalidated();
					onLoad();
				}
			}, 2000);
			 
		}
		//上拉加载
		@Override
		public void onLoadMore() {
			mHandler.postDelayed(new Runnable() {
				@Override
				public void run() {
					geneItems();
					// notifyDataSetChanged() 动态更新ListView
					adapter.notifyDataSetChanged();
					// 更新界面显示
					onLoad();
				}
			}, 2000);
		}
	};
	private String getDate() {
		Date date = new Date();
		SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");
		String str = format.format(date);
		return str;
	}
	private void onLoad() {
		xListView.stopRefresh();
		xListView.stopLoadMore();
		SharedPreferences sp = MainActivity.this.getSharedPreferences(
				"RefreshTime", Context.MODE_PRIVATE);
		// 先读
		String time = sp.getString("time", "未知");
		xListView.setRefreshTime(time);
		Editor edit = sp.edit();
		edit.putString("time", getDate());
		edit.commit();
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值