==最近向用xListView实现刷新效果,在网上没有找到相关的例子和方法说明。自己看了会儿demo在此留下笔记以供日后复习== 第一步:到官网下载第三方包,拷贝到自己的项目中。要注意的地方是在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>
第三步:开始编写java代码
package me.maxwin; import java.util.ArrayList; import me.maxwin.view.XListView; import me.maxwin.view.XListView.IXListViewListener; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.widget.ArrayAdapter; public class XListViewActivity extends Activity implements IXListViewListener { private XListView mListView; //创建XListView对象 private ArrayAdapter<String> mAdapter; //创建适配器 private ArrayList<String> items = new ArrayList<String>(); //这个是本例中模拟的数据 private Handler mHandler; //用来模拟网络请求的(不要被迷惑) private int start = 0; private static int refreshCnt = 0; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); geneItems(); mListView = (XListView) findViewById(R.id.xListView);// ~~~~~指定布局中的xListView控件~~~~~ mListView.setPullLoadEnable(true);//上拉刷新 mAdapter = new ArrayAdapter<String>(this, R.layout.list_item, items);//用模拟的数据填充系统的adapter mListView.setAdapter(mAdapter);//指定adapter // mListView.setPullLoadEnable(false); // mListView.setPullRefreshEnable(false);//下拉刷新 mListView.setXListViewListener(this);//给xListView设置监听 ****** //给xListView条目设置监听事件 mHandler = new Handler(); } private void geneItems() { for (int i = 0; i != 5; ++i) { items.add("refresh cnt"+ (++start)); } } //或的数据后一定要加onLoad()方法,否则刷新会一直进行,根本停不下来 private void onLoad() { mListView.stopRefresh(); mListView.stopLoadMore(); mListView.setRefreshTime("刚刚"); } @Override public void onRefresh() { mHandler.postDelayed(new Runnable() { @Override public void run() { start = ++refreshCnt; items.clear(); geneItems(); // mAdapter.notifyDataSetChanged(); mAdapter = new ArrayAdapter<String>(XListViewActivity.this, R.layout.list_item, items); mListView.setAdapter(mAdapter); onLoad(); } }, 2000); } @Override public void onLoadMore() { mHandler.postDelayed(new Runnable() { @Override public void run() { geneItems(); mAdapter.notifyDataSetChanged(); onLoad(); } }, 2000); } }
需要注意的地方: 1.给XListViewListener 设置监听事件mListView.setXListViewListener(this); 2.获取数据后调用onLoad()方法 3.如果想给xListView中的条目设置监听事件和原来的ListView一样(重写了ListView的OnItemClickListen方法) ps:各位大神请轻喷,另外希望爱好编程的小伙伴能加这个群,互相帮助,共同学习。群号: 141877583
http://www.thinksaas.cn/group/topic/348557/