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. Python匹配中文的正则表达式

    python 中的字符串: https://www.cnblogs.com/livingintruth/p/3282981.html # -*- coding: utf-8 -*- import re ...

  2. WEB架构师成长之路 三

    Web架构师究竟都要学些什么?具备哪些能力呢?先网上查查架构师的大概的定义,参见架构师修炼之道这篇文章,写的还不错,再查查公司招聘Web架构师的要求. 总结起来大概有下面几点技能要求: 一. 架构师有 ...

  3. java线程系列文章之一(线程的安全性)

    本文来自:高爽|Coder,原文地址:http://blog.csdn.net/ghsau/article/details/7421217,转载请注明. 当我们查看JDK API的时候,总会发现一些类 ...

  4. Codeforces Round #256 (Div. 2) C. Painting Fence

    C. Painting Fence Bizon the Champion isn't just attentive, he also is very hardworking. Bizon the Ch ...

  5. 体感设备:因特尔 Intel RealSense R200,乐视LeTV Pro Xtion和Orb奥比中光bec Astra比较

    最近调试三个个厂家的体感设备,第一个是Intel的RealSense R200(参数规格:分辨率:1080p,深度有效距离:0.51-4,USB3.0),第二个是乐视LeTV Pro Xtion(参数 ...

  6. InvalidateRect(转)

    ///===================该段是自己总结的一个小结================================= InvalidateRect()函数的作用是设置一个无效区域,并 ...

  7. Java-子类扩展父类功能

    class person {  private String name;  private int age;  public String getname(){   return this.name; ...

  8. linux下patch命令使用详解---linux打补丁命令

    http://blog.csdn.net/pashanhu6402/article/details/51849354 语 法:patch [-bceEflnNRstTuvZ][-B <备份字首字 ...

  9. PostgreSQL 资源

    http://blog.163.com/digoal@126/blog/static/163877040201172183022203/ http://m.oschina.net/u/2426299? ...

  10. 将asi-http-request引入到ARC工程需要做的 转

    在发表前,容许我发两句牢骚,太折腾了.但结合网路上各种大侠的答案相助,最终我终于可以在ARC项目使用该库了. 1.需要下载asi-http-request这个包.https://github.com/ ...