Android -- PullToRefresh应用
PullToRefresh
支持ListView、ExpandableListView、GridView、WebView
下载地址:https://github.com/chrisbanes/Android-PullToRefresh
注意,若是要放到android studio中的话,需要在eclipse中以android studio工程的方式导出。
Code
布局:
<LinearLayout 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:orientation="vertical"
tools:context=".MyActivity"> <com.handmark.pulltorefresh.library.PullToRefreshListView
android:id="@+id/lv_main"
android:layout_width="fill_parent"
android:layout_height="fill_parent"></com.handmark.pulltorefresh.library.PullToRefreshListView>
</LinearLayout>
配置:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
mList = new ArrayList<String>();
for (int i = 0; i < mStr.length; i++) {
mList.add(mStr[i]);
}
mListView = (PullToRefreshListView) findViewById(R.id.lv_main);
// mListView.setOnRefreshListener(new MyRefreshListener());
mListView.setOnRefreshListener(new MyRefreshListener2());
mMyAdapter = new MyAdapter();
mListView.setAdapter(mMyAdapter);
mListView.setMode(PullToRefreshBase.Mode.BOTH);
mListView.getLoadingLayoutProxy().setLastUpdatedLabel("setLastUpdatedLabel");
mListView.getLoadingLayoutProxy().setLoadingDrawable(getResources().getDrawable(R.drawable.ic_launcher));
mListView.getLoadingLayoutProxy().setPullLabel("setPullLabel");
mListView.getLoadingLayoutProxy().setRefreshingLabel("setRefreshingLabel");
mListView.getLoadingLayoutProxy().setReleaseLabel("setReleaseLabel"); }
PullToRefreshBase.Mode.BOTH指的是下拉和上拉刷新两张模式。
class MyRefreshListener implements PullToRefreshBase.OnRefreshListener {
@Override
public void onRefresh(PullToRefreshBase refreshView) {
}
}
class MyRefreshListener2 implements PullToRefreshBase.OnRefreshListener2 {
@Override
public void onPullDownToRefresh(PullToRefreshBase refreshView) {
mList.clear();
for (int i = 0; i < mStr.length; i++) {
mList.add(mStr[i]);
}
new Thread(new MyRunnable()).start();
}
@Override
public void onPullUpToRefresh(PullToRefreshBase refreshView) {
for (int i = 0; i < mStr.length; i++) {
mList.add(mStr[i]);
}
new Thread(new MyRunnable()).start();
}
}
这里有两个监听器,我们来简单说一下PullToRefreshBase.OnRefreshListener2 ,很明显,分别指的是一个是上拉,一个是下拉的刷新的回调。
public class MyActivity extends Activity {
private PullToRefreshListView mListView;//pulltorefresh控件
private List<String> mList;//存放数据
private String[] mStr = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"};//数据
private MyAdapter mMyAdapter;//适配器
//一个延时,然后处理
private Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
switch (msg.what) {
case 1:
Log.i("handleMessage", "handleMessage");
mListView.onRefreshComplete();
mMyAdapter.notifyDataSetChanged();
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
mList = new ArrayList<String>();//初始化
for (int i = 0; i < mStr.length; i++) {
mList.add(mStr[i]);//准备数据
}
mListView = (PullToRefreshListView) findViewById(R.id.lv_main);
// mListView.setOnRefreshListener(new MyRefreshListener());
mListView.setOnRefreshListener(new MyRefreshListener2());//设置监听器
mMyAdapter = new MyAdapter();//初始化适配器
mListView.setAdapter(mMyAdapter);
mListView.setMode(PullToRefreshBase.Mode.BOTH);//模式为上拉和下拉
mListView.getLoadingLayoutProxy().setLastUpdatedLabel("setLastUpdatedLabel");
mListView.getLoadingLayoutProxy().setLoadingDrawable(getResources().getDrawable(R.drawable.ic_launcher));//loading的时候的图片
mListView.getLoadingLayoutProxy().setPullLabel("setPullLabel");
mListView.getLoadingLayoutProxy().setRefreshingLabel("setRefreshingLabel");
mListView.getLoadingLayoutProxy().setReleaseLabel("setReleaseLabel");
}
class MyRefreshListener implements PullToRefreshBase.OnRefreshListener {
@Override
public void onRefresh(PullToRefreshBase refreshView) {
}
}
class MyRefreshListener2 implements PullToRefreshBase.OnRefreshListener2 {
@Override
public void onPullDownToRefresh(PullToRefreshBase refreshView) {
mList.clear();
for (int i = 0; i < mStr.length; i++) {//添加数据
mList.add(mStr[i]);
}
new Thread(new MyRunnable()).start();//执行延时
}
@Override
public void onPullUpToRefresh(PullToRefreshBase refreshView) {
for (int i = 0; i < mStr.length; i++) {//添加数据
mList.add(mStr[i]);
}
new Thread(new MyRunnable()).start();//执行延时
}
}
class MyAdapter extends BaseAdapter {
@Override
public int getCount() {
return mList.size();
}
@Override
public Object getItem(int i) {
return mList.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if (view == null) {
view = LayoutInflater.from(MyActivity.this).inflate(R.layout.item, null);
TextView tv = (TextView) view.findViewById(R.id.txt);
tv.setText(mList.get(i));
} else {
TextView tv = (TextView) view.findViewById(R.id.txt);
tv.setText(mList.get(i));
}
return view;
}
}
class MyRunnable implements Runnable {
@Override
public void run() {
try {
Thread.sleep(2000);//延时2s
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.i("MyRunnable", "MyRunnable");
mHandler.sendEmptyMessage(1);
}
}
}
我是天王盖地虎的分割线
源代码:https://github.com/pinguo-yuyidong/Study_Demos/tree/master/PullToReFreshDemo
Android -- PullToRefresh应用的更多相关文章
- 【转载】 Android PullToRefresh (ListView GridView 下拉刷新) 使用详解
Android下拉刷新pullToRefreshListViewGridView 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/3 ...
- Android PullToRefresh (GridView 下拉刷新上拉加载)
做这个需要自己去git hub上下载个pull-to-refresh 里面有个library为依赖包自己导到自己的项目中 (下载地址:https://github.com/chrisbanes/And ...
- Android PullToRefresh (ListView GridView 下拉刷新) 使用详解
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38238749,本文出自:[张鸿洋的博客] 群里一哥们今天聊天偶然提到这个git ...
- Android pulltorefresh使用
pulltorefresh插件可以轻松实现上拉下拉刷新,github.com上直接搜索进行下载. 布局文件: <RelativeLayout xmlns:android="http:/ ...
- Android PullToRefresh (ListView GridView 下拉刷新) 使用详解 (转载)
最近项目用到下拉刷新,上来加载更多,这里对PullToRefresh这控件进行了解和使用. 以下内容转载自:http://blog.csdn.net/lmj623565791/article/deta ...
- Android PullToRefresh下拉刷新控件的简单使用
PullToRefresh这个开源库早就听说了,不过一直没用过.作为一个经典的的开源库,我觉得还是有必要认识一下. 打开github上的网址:https://github.com/chrisbanes ...
- 【转】Android PullToRefresh (ListView GridView 下拉刷新) 使用详解
最近项目用到下拉刷新,上来加载更多,这里对PullToRefresh这控件进行了解和使用. 以下内容转载自:http://blog.csdn.net/lmj623565791/article/deta ...
- Android PullToRefresh 下拉刷新,上拉很多其它,支持ScrollView,ListView,可方便拓展GridView,WebView等
在写着东西之前.从网上找到非常多这方面的源代码,可是基本没有找到惬意的.包含在GitHub上的比較有名的Android-PullToRefresh-master.思来想去还是自己写吧.当然当中借鉴了一 ...
- Android pulltorefresh引用遇到的一个问题
今天在使用pulltorefresh插件的时候遇到了一个让人头疼的问题,在Eclipse中导入要用到的library项目,然后新建一个项目引入Library,显示的是引入成功,如图 而且project ...
随机推荐
- Wireshark数据抓包教程之认识捕获分析数据包
Wireshark数据抓包教程之认识捕获分析数据包 认识Wireshark捕获数据包 当我们对Wireshark主窗口各部分作用了解了,学会捕获数据了,接下来就该去认识这些捕获的数据包了.Wiresh ...
- ONVIF开发实例
<开发过过程中的经验总结> ➤工具的使用 (1)首先将文件soapClientLib.c 中"代码"的第二行和第三行注释掉,实际上该文件根本没有用,为了保险起见 ...
- Python进阶篇:文件系统的操作
通过一个例子来熟悉文件的基本操作:创建文件,读取文件,修改文件,删除文件,重命名文件,判断文件是否存在 ''' 编写可供查询的员工信息表--学号 姓名 年龄 班级 1. 提供格式化查询接口 2. 允许 ...
- MyBatis 插入时返回刚插入记录的主键值
MyBatis 插入时返回刚插入记录的主键值 一.要求: 1.数据库表中的主键是自增长的,如:id: 2.获取刚刚插入的记录的id值: 二.源代码: 1.User.java package cn.co ...
- Jenkins 使用 maven 出现C:\Windows\system32\config\systemprofile的解决
jenkins 使用 maven 出现 C:\Windows\system32\config\systemprofile 的原因是 Jenkins 服务启动的账号使用了系统的账号,在服务里改成具体的桌 ...
- Android中利用ant进行多渠道循环批量打包
公司负责Android开发的小伙伴学习能力稍微偏弱,交代给他的自动化打包的任务,弄了好久依然没有成效.无奈只好亲自出手. 没有想到过程很顺利,我完全按照如下文章的步骤进行: 主要参考: Android ...
- 【POJ】2151:Check the difficulty of problems【概率DP】
Check the difficulty of problems Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 8903 ...
- poj 1328 Radar Installation 排序贪心
Radar Installation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 56702 Accepted: 12 ...
- flash从数据流判断图片格式防止xss攻击
前段时间测试人员报了一个flash的xss bug,经分析用了Loader.loadBytes且没做数据流格式校验的程序都会中招,自测方法只需一行代码: ExternalInterface.call( ...
- 如何设置Android手机的sqlite3命令环境
1.在PC环境下启动一个模拟器(不是手机) 2.查看模拟器 /systen/xbin是否有sqlite3命令 adb shell cd /system/xbin ls 3.把模拟器 /system/x ...