PullToRefreshListView下拉刷新與上拉加載

【聲明】轉載請註明出處,此文出自指尖飛落的博客:http://blog.csdn.net/huntersnail

——尊重作者,知識無價,交流無限!

前言:下拉刷新是Android項目中經常要用到的東西,對於沒有經驗的開發者來說,第一次接觸確實比較頭疼。

網上有很多可供參考的框架,我用的是GitHub那裏下載的一個框架handmark點擊打開鏈接這也是我在網上看到大家用得最多的一個框架,當然,很多大神會不屑一顧,分分鐘就自己寫出來了。咱不去比那玩意兒,畢竟自己寫還需要一點功底的,我想還有很多是和筆者一樣剛入行的,僅供交流,望各大神不吝賜教。下面就貼下代碼,說一下如何去用!


1、導庫

右鍵點擊項目——>點擊Properties——>點擊Android——>點擊Add添加庫——>Ok


2、Activity

package com.example.refreshdemo;

import java.util.ArrayList;
import java.util.List;

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

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener2;

public class MainActivity extends Activity {
	private PullToRefreshListView mPtrlv;
	private List<String> list;
	private MyAdapter mAdapter;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		mPtrlv=(PullToRefreshListView) findViewById(R.id.ptrlv);
		//設置模式,BOTH:上拉下拉
		//DISABLED:取消上拉下拉
		//PULL_FROM_END:只上拉
		//PULL_FROM_START:只下拉
		mPtrlv.setMode(Mode.BOTH);
		list=new ArrayList<String>();
		
		initData();
		setListener();
		mAdapter=new MyAdapter();
		mPtrlv.setAdapter(mAdapter);
		
	}
	
	/**
	 * 初始化模擬數據
	 */
	private void initData() {
		for (int i = 0; i < 10; i++) {
			list.add("模擬數據"+i);
		}
	}
	
	
	private void setListener() {
		mPtrlv.setOnRefreshListener(new OnRefreshListener2<ListView>() {
			/**
			 * 下拉刷新
			 * 如果需要下拉加載上一頁,在這個方法onPullDownToRefresh()做處理
			 */
			int x=1;
			@Override
			public void onPullDownToRefresh(
					PullToRefreshBase<ListView> refreshView) {
				list.add(0, "下拉刷新<<<上一頁:"+x++);
				//通知數據改變
				mAdapter.notifyDataSetChanged();
				
				new MyTask().execute();
			}
			
			/**
			 * 上拉加載
			 * 如果需要下拉加載上一頁,在這個方法onPullUpToRefresh()做處理
			 */
			int y=1;
			@Override
			public void onPullUpToRefresh(
					PullToRefreshBase<ListView> refreshView) {
				list.add("上拉加載>>>下一頁:"+y++);
				//通知數據改變
				mAdapter.notifyDataSetChanged();
				
				new MyTask().execute();
			}
		});
	}
	
	/**
	 * 自定義適配器
	 * @author Endoon
	 * 2015-7-24 09:23:19
	 */
	class MyAdapter extends BaseAdapter{

		@Override
		public int getCount() {
			return list.size();
		}

		@Override
		public Object getItem(int position) {
			return position;
		}

		@Override
		public long getItemId(int position) {
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			TextView mView=new TextView(getApplicationContext());
			mView.setText(list.get(position));
			mView.setTextColor(Color.RED);
			mView.setGravity(Gravity.CENTER);
			return mView;
		}
	}
	
	/**
	 * 異步加載數據
	 * @author Endoon
	 * 2015-7-24 09:23:12
	 */
	class MyTask extends AsyncTask<Void, Void, Void>{
		@Override
		protected Void doInBackground(Void... params) {
			return null;
		}
	
		@Override
		protected void onPostExecute(Void result) {
			super.onPostExecute(result);
			//Mark the current Refresh as complete. Will Reset the UI and hide the Refreshing View
			mPtrlv.onRefreshComplete();//刷新UI
		}
	};
}


3、Xml文件

<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"
    tools:context=".MainActivity" >

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

</RelativeLayout>


4、效果圖



源碼和庫下載地址:點擊打開鏈接

O(∩_∩)O哈哈~歡迎各種吐槽、鄙視、指教、交流......

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆轉載請註明出處☞指尖飛落的博客☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

發佈了22 篇原創文章 · 獲贊 10 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章