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应用的更多相关文章

  1. 【转载】 Android PullToRefresh (ListView GridView 下拉刷新) 使用详解

    Android下拉刷新pullToRefreshListViewGridView 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/3 ...

  2. Android PullToRefresh (GridView 下拉刷新上拉加载)

    做这个需要自己去git hub上下载个pull-to-refresh 里面有个library为依赖包自己导到自己的项目中 (下载地址:https://github.com/chrisbanes/And ...

  3. Android PullToRefresh (ListView GridView 下拉刷新) 使用详解

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38238749,本文出自:[张鸿洋的博客] 群里一哥们今天聊天偶然提到这个git ...

  4. Android pulltorefresh使用

    pulltorefresh插件可以轻松实现上拉下拉刷新,github.com上直接搜索进行下载. 布局文件: <RelativeLayout xmlns:android="http:/ ...

  5. Android PullToRefresh (ListView GridView 下拉刷新) 使用详解 (转载)

    最近项目用到下拉刷新,上来加载更多,这里对PullToRefresh这控件进行了解和使用. 以下内容转载自:http://blog.csdn.net/lmj623565791/article/deta ...

  6. Android PullToRefresh下拉刷新控件的简单使用

    PullToRefresh这个开源库早就听说了,不过一直没用过.作为一个经典的的开源库,我觉得还是有必要认识一下. 打开github上的网址:https://github.com/chrisbanes ...

  7. 【转】Android PullToRefresh (ListView GridView 下拉刷新) 使用详解

    最近项目用到下拉刷新,上来加载更多,这里对PullToRefresh这控件进行了解和使用. 以下内容转载自:http://blog.csdn.net/lmj623565791/article/deta ...

  8. Android PullToRefresh 下拉刷新,上拉很多其它,支持ScrollView,ListView,可方便拓展GridView,WebView等

    在写着东西之前.从网上找到非常多这方面的源代码,可是基本没有找到惬意的.包含在GitHub上的比較有名的Android-PullToRefresh-master.思来想去还是自己写吧.当然当中借鉴了一 ...

  9. Android pulltorefresh引用遇到的一个问题

    今天在使用pulltorefresh插件的时候遇到了一个让人头疼的问题,在Eclipse中导入要用到的library项目,然后新建一个项目引入Library,显示的是引入成功,如图 而且project ...

随机推荐

  1. JavaScript基础-DAY1

    JavaScript介绍 你不知道它是什么就学?这就是一个网页嵌入式脚本语言...仅此而已 JavaScript组成 一个完整的 JavaScript 实现是由以下 3 个不同部分组成的: 核心(EC ...

  2. Xamarin 2017.11.1更新

     Xamarin 2017.11.1更新 本次更新主要解决了一些bug.Visual Studio 2017升级到15.4.2获得新功能.Visual Studio 2015需要工具-选项-Xamar ...

  3. iOS 9应用开发教程之ios9中实现按钮的响应

    iOS 9应用开发教程之ios9中实现按钮的响应 IOS9实现按钮的响应 按钮主要是实现用户交互的,即实现响应.按钮实现响应的方式可以根据添加按钮的不同分为两种:一种是编辑界面添加按钮实现的响应:另一 ...

  4. mysql查询语句 和 多表关联查询 以及 子查询

    原文地址: http://blog.csdn.net/github_37767025/article/details/67636061 1.查询一张表: select * from 表名: 2.查询指 ...

  5. Codeforces Round #297 (Div. 2)A. Vitaliy and Pie 水题

    Codeforces Round #297 (Div. 2)A. Vitaliy and Pie Time Limit: 2 Sec  Memory Limit: 256 MBSubmit: xxx  ...

  6. 极路由通过SSH添加静态路由表之后无法跳转的问题

    1.确定系统已经开启了转发功能: /etc/sysctl.conf下的配置项目为net.ipv4.ip_forward = 1 2.关闭防火墙的REJECT,也就是修改/etc/config/fire ...

  7. Zookeeper Monitor集群监控开发

    随着线上越来越多的系统依赖Zookeeper集群.以至于Zookeeper集群的执行状况越来越重要.可是眼下还没有什么好用的Zookeeper集群监控系统(淘宝开源了一个Zookeeper监控系统,可 ...

  8. Android Tasker应用之自动查询并显示话费流量套餐信息

    Android Tasker应用之自动查询并显示话费流量套餐信息 虽然Android平台有非常多的流量监控软件,但最准确的流量数据还是掌握在运营商手里.有些朋友可能像我一样时不时地发短信查询流量信息, ...

  9. 利用.bat文件快速设置IE代理与清除IE代理

    http://www.duoluodeyu.com/2009/17.html 设置IE代理.bat文件原文:将下面红色文字复制保存为.bat文件即可. 复制后将蓝色字体部分改成你要设置的代理服务器地址 ...

  10. (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程。) (Microsoft SQL Server,错误: 233)

    ------------------------------ 无法连接到 IFCA-LIUWEI/SQL2005. ------------------------------其他信息: 已成功与服务 ...