首先是分析XListView({@XListView-Android-master.rar@}已加载)
项目图:
第一步:到官网下载第三方包,拷贝到自己的项目中(这里是自己拷贝进项目的,不是通过属性添加的)。要注意的地方是在
layout
String
drawable
下也有这个控件的配置信息,这个一定要考进去。
第二步:布局文件(背景一定要设置成透明色)
第三步:代码实现
在java中:
<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();
}
}