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

来源:互联网 发布:gitlab for mac客户端 编辑:程序博客网 时间:2024/06/05 18:29

在做项目的时候,用了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;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.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>{@Overrideprotected Void doInBackground(Integer... params) {switch (params[0]) {case REFRESH_ACTION:refresh();break;case LOAD_ACTION: load();break;default:break;}return null;}@Overrideprotected 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

1 0
原创粉丝点击