android下拉刷新和上拉加载的一个简单库

介绍一个android下拉刷新、上拉加载的库:

https://github.com/chrisbanes/Android-PullToRefresh

使用方式,创建好一个Android项目,导入library库即可:

布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <com.handmark.pulltorefresh.library.PullToRefreshListView
        android:id="@+id/pull_refresh_list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
   </com.handmark.pulltorefresh.library.PullToRefreshListView>

</RelativeLayout>

主要Activity:

package com.example.pulltofresh;

import java.util.Arrays;
import java.util.LinkedList;

import android.app.Activity;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener;
import com.handmark.pulltorefresh.library.PullToRefreshListView;

public class MainActivity extends Activity {
	private PullToRefreshListView mPullToRefreshListView;
	private LinkedList<String> mItemList;
	private ArrayAdapter<String> adapter;
	private int first = 0;
	private int end = 0;

	private Context context;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		context = this;
		initData();
		
		adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mItemList);
		
		//初始化控件
		mPullToRefreshListView = (PullToRefreshListView)findViewById(R.id.pull_refresh_list);
		ListView mListView = mPullToRefreshListView.getRefreshableView();
		mListView.setAdapter(adapter);
		
		mPullToRefreshListView.setMode(Mode.BOTH);
		mPullToRefreshListView.setOnRefreshListener(new OnRefreshListener<ListView>(){

			@Override
			public void onRefresh(PullToRefreshBase<ListView> refreshView) {
				
				new GetDataTask(refreshView,adapter).execute();
			}				
		});		
		
	}
	
	
	private class GetDataTask extends AsyncTask<Void, Void, String[]> {
		private PullToRefreshBase<ListView> refreshView;
		private ArrayAdapter<String> adapter;
		
		public GetDataTask(PullToRefreshBase<ListView> refreshView,ArrayAdapter<String> adapter) {
			this.refreshView = refreshView;
			this.adapter = adapter;
		}
		
		@Override
		protected String[] doInBackground(Void... params) {
			// Simulates a background job.
			try {
				Thread.sleep(1000);
			} catch (InterruptedException e) {
			}
			return data;
		}

		@Override
		protected void onPostExecute(String[] result) {
			if (refreshView.isHeaderShown()){
				Toast.makeText(context, "下拉刷新",Toast.LENGTH_SHORT).show();
				mItemList.addFirst("first" + first);
				first++;
			}else{
				Toast.makeText(context, "上拉加载更多",Toast.LENGTH_SHORT).show();
				mItemList.addLast("end" + end);
				end++;
			}					
			adapter.notifyDataSetChanged();
			mPullToRefreshListView.onRefreshComplete();
			super.onPostExecute(result);
		}
	}
	
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
	
	 private void initData(){
		//初始化数据
		mItemList = new LinkedList<String>();
		mItemList.addAll(Arrays.asList(data));
	 }

	private String[] data  = new String[]{"data1","data2","data3","data4","data5","data6",
			            "data1","data2","data3","data4","data5","data6"};

	protected String[] doInBackground(Void... params) {
		// TODO Auto-generated method stub
		return null;
	}
}
运行结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值