【聲明】轉載請註明出處,此文出自指尖飛落的博客: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哈哈~歡迎各種吐槽、鄙視、指教、交流......
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆轉載請註明出處☞指尖飛落的博客☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆