使用 Android-PullToRefresh 框架
Github地址:https://github.com/chrisbanes/Android-PullToRefresh
使用方法(Eclipse)
1.下载github地址里的项目
2.解压library和extras两个文件夹, 这2个文件夹都是依赖项目(导入extras后会有2个项目,导入library会有1个项目)
3.在自己项目里引入刚导入的这3个项目。
4.剩下的就可以导入PullToRefresh 自带的例子(simple),学习具体的用法了。
简单例子
效果
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"
>
<com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/pull_refresh_list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:cacheColorHint="#00000000"
android:divider="#19000000"
android:dividerHeight="1dp"
android:fadingEdge="none"
android:fastScrollEnabled="false"
android:footerDividersEnabled="false"
android:headerDividersEnabled="false"
android:smoothScrollbar="true" />
</RelativeLayout>
Activity
package com.example.testpulltorefresh;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnLastItemVisibleListener;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener;
import com.handmark.pulltorefresh.library.PullToRefreshBase.OnRefreshListener2;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import android.app.Activity;
import android.graphics.AvoidXfermode.Mode;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends Activity {
private PullToRefreshListView mListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
mListView.onRefreshComplete();
};
};
mListView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list);
// 设置listview为下拉刷新,上拉加载更多
mListView.setMode(com.handmark.pulltorefresh.library.PullToRefreshBase.Mode.BOTH);
// 设置上拉加载的文字
mListView.getLoadingLayoutProxy(false, true).setPullLabel("上拉加载更多");
mListView.getLoadingLayoutProxy(false, true).setRefreshingLabel("加载中");
mListView.getLoadingLayoutProxy(false, true).setReleaseLabel("放开以加载...");
ArrayAdapter<String> mAdapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,
new String[] { "1", "2","3", "1", "2", "3", "1", "2", "3", "1", "2", "3", "1","2", "3" });
mListView.setAdapter(mAdapter);
// 设置下拉刷新监听
// mListView.setOnRefreshListener(new OnRefreshListener<ListView>() {
//
// @Override
// public void onRefresh(PullToRefreshBase<ListView> refreshView) {
// Log.v("TAG", "下拉刷新中///");
// // 模拟耗时操作
// new Thread(new Runnable() {
//
// @Override
// public void run() {
// try {
// Thread.sleep(3000);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
// Log.v("TAG", "下拉刷新完毕///");
// handler.sendEmptyMessage(0);
// }
// }).start();
// }
//
// });
// 同时设置下拉刷新和上拉加载更多
mListView.setOnRefreshListener(new OnRefreshListener2<ListView>() {
@Override
public void onPullDownToRefresh(
PullToRefreshBase<ListView> refreshView) {
Log.v("TAG", "下拉刷新中///");
// 模拟耗时操作
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.v("TAG", "下拉刷新完毕///");
handler.sendEmptyMessage(0);
}
}).start();
}
@Override
public void onPullUpToRefresh(
PullToRefreshBase<ListView> refreshView) {
Log.v("TAG", "上拉加载中///");
// 模拟耗时操作
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.v("TAG", "上拉加载完毕///");
handler.sendEmptyMessage(1);
}
}).start();
}
});
// 已经下拉到最后一个item
mListView.setOnLastItemVisibleListener(new OnLastItemVisibleListener() {
@Override
public void onLastItemVisible() {
Log.v("TAG", "已经到末尾了!");
}
});
}
}
学习资料转载于:
http://blog.csdn.net/ueryueryuery/article/details/17440465