PullToRefresh

支持ListView、ExpandableListView、GridView、WebView

下载地址:https://github.com/chrisbanes/Android-PullToRefresh

注意,若是要放到android studio中的话,需要在eclipse中以android studio工程的方式导出。

Code

布局:

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:orientation="vertical"
  6. tools:context=".MyActivity">
  7.  
  8. <com.handmark.pulltorefresh.library.PullToRefreshListView
  9. android:id="@+id/lv_main"
  10. android:layout_width="fill_parent"
  11. android:layout_height="fill_parent"></com.handmark.pulltorefresh.library.PullToRefreshListView>
  12. </LinearLayout>

配置:

  1. @Override
  2. protected void onCreate(Bundle savedInstanceState) {
  3. super.onCreate(savedInstanceState);
  4. setContentView(R.layout.activity_my);
  5. mList = new ArrayList<String>();
  6. for (int i = 0; i < mStr.length; i++) {
  7. mList.add(mStr[i]);
  8. }
  9. mListView = (PullToRefreshListView) findViewById(R.id.lv_main);
  10. // mListView.setOnRefreshListener(new MyRefreshListener());
  11. mListView.setOnRefreshListener(new MyRefreshListener2());
  12. mMyAdapter = new MyAdapter();
  13. mListView.setAdapter(mMyAdapter);
  14. mListView.setMode(PullToRefreshBase.Mode.BOTH);
  15. mListView.getLoadingLayoutProxy().setLastUpdatedLabel("setLastUpdatedLabel");
  16. mListView.getLoadingLayoutProxy().setLoadingDrawable(getResources().getDrawable(R.drawable.ic_launcher));
  17. mListView.getLoadingLayoutProxy().setPullLabel("setPullLabel");
  18. mListView.getLoadingLayoutProxy().setRefreshingLabel("setRefreshingLabel");
  19. mListView.getLoadingLayoutProxy().setReleaseLabel("setReleaseLabel");
  20.  
  21. }

PullToRefreshBase.Mode.BOTH指的是下拉和上拉刷新两张模式。

  1. class MyRefreshListener implements PullToRefreshBase.OnRefreshListener {
  2.  
  3. @Override
  4. public void onRefresh(PullToRefreshBase refreshView) {
  5.  
  6. }
  7. }
  8.  
  9. class MyRefreshListener2 implements PullToRefreshBase.OnRefreshListener2 {
  10.  
  11. @Override
  12. public void onPullDownToRefresh(PullToRefreshBase refreshView) {
  13. mList.clear();
  14. for (int i = 0; i < mStr.length; i++) {
  15. mList.add(mStr[i]);
  16. }
  17. new Thread(new MyRunnable()).start();
  18. }
  19.  
  20. @Override
  21. public void onPullUpToRefresh(PullToRefreshBase refreshView) {
  22. for (int i = 0; i < mStr.length; i++) {
  23. mList.add(mStr[i]);
  24. }
  25. new Thread(new MyRunnable()).start();
  26. }
  27. }

这里有两个监听器,我们来简单说一下PullToRefreshBase.OnRefreshListener2 ,很明显,分别指的是一个是上拉,一个是下拉的刷新的回调。

  1. public class MyActivity extends Activity {
  2.  
  3. private PullToRefreshListView mListView;//pulltorefresh控件
  4. private List<String> mList;//存放数据
  5. private String[] mStr = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19"};//数据
  6. private MyAdapter mMyAdapter;//适配器
  7. //一个延时,然后处理
  8. private Handler mHandler = new Handler() {
  9. @Override
  10. public void handleMessage(Message msg) {
  11. super.handleMessage(msg);
  12. switch (msg.what) {
  13. case 1:
  14. Log.i("handleMessage", "handleMessage");
  15. mListView.onRefreshComplete();
  16. mMyAdapter.notifyDataSetChanged();
  17. break;
  18. }
  19. }
  20. };
  21.  
  22. @Override
  23. protected void onCreate(Bundle savedInstanceState) {
  24. super.onCreate(savedInstanceState);
  25. setContentView(R.layout.activity_my);
  26. mList = new ArrayList<String>();//初始化
  27. for (int i = 0; i < mStr.length; i++) {
  28. mList.add(mStr[i]);//准备数据
  29. }
  30. mListView = (PullToRefreshListView) findViewById(R.id.lv_main);
  31. // mListView.setOnRefreshListener(new MyRefreshListener());
  32. mListView.setOnRefreshListener(new MyRefreshListener2());//设置监听器
  33. mMyAdapter = new MyAdapter();//初始化适配器
  34. mListView.setAdapter(mMyAdapter);
  35. mListView.setMode(PullToRefreshBase.Mode.BOTH);//模式为上拉和下拉
  36. mListView.getLoadingLayoutProxy().setLastUpdatedLabel("setLastUpdatedLabel");
  37. mListView.getLoadingLayoutProxy().setLoadingDrawable(getResources().getDrawable(R.drawable.ic_launcher));//loading的时候的图片
  38. mListView.getLoadingLayoutProxy().setPullLabel("setPullLabel");
  39. mListView.getLoadingLayoutProxy().setRefreshingLabel("setRefreshingLabel");
  40. mListView.getLoadingLayoutProxy().setReleaseLabel("setReleaseLabel");
  41.  
  42. }
  43.  
  44. class MyRefreshListener implements PullToRefreshBase.OnRefreshListener {
  45.  
  46. @Override
  47. public void onRefresh(PullToRefreshBase refreshView) {
  48.  
  49. }
  50. }
  51.  
  52. class MyRefreshListener2 implements PullToRefreshBase.OnRefreshListener2 {
  53.  
  54. @Override
  55. public void onPullDownToRefresh(PullToRefreshBase refreshView) {
  56. mList.clear();
  57. for (int i = 0; i < mStr.length; i++) {//添加数据
  58. mList.add(mStr[i]);
  59. }
  60. new Thread(new MyRunnable()).start();//执行延时
  61. }
  62.  
  63. @Override
  64. public void onPullUpToRefresh(PullToRefreshBase refreshView) {
  65. for (int i = 0; i < mStr.length; i++) {//添加数据
  66. mList.add(mStr[i]);
  67. }
  68. new Thread(new MyRunnable()).start();//执行延时
  69. }
  70. }
  71.  
  72. class MyAdapter extends BaseAdapter {
  73.  
  74. @Override
  75. public int getCount() {
  76. return mList.size();
  77. }
  78.  
  79. @Override
  80. public Object getItem(int i) {
  81. return mList.get(i);
  82. }
  83.  
  84. @Override
  85. public long getItemId(int i) {
  86. return i;
  87. }
  88.  
  89. @Override
  90. public View getView(int i, View view, ViewGroup viewGroup) {
  91. if (view == null) {
  92. view = LayoutInflater.from(MyActivity.this).inflate(R.layout.item, null);
  93. TextView tv = (TextView) view.findViewById(R.id.txt);
  94. tv.setText(mList.get(i));
  95. } else {
  96. TextView tv = (TextView) view.findViewById(R.id.txt);
  97. tv.setText(mList.get(i));
  98. }
  99. return view;
  100. }
  101. }
  102.  
  103. class MyRunnable implements Runnable {
  104.  
  105. @Override
  106. public void run() {
  107. try {
  108. Thread.sleep(2000);//延时2s
  109. } catch (InterruptedException e) {
  110. e.printStackTrace();
  111. }
  112. Log.i("MyRunnable", "MyRunnable");
  113. mHandler.sendEmptyMessage(1);
  114. }
  115. }
  116.  
  117. }

我是天王盖地虎的分割线

源代码: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 乘法表、打印菱形

    for i in range(1,10): print ' '.join(map(lambda x:"%d x %d = %d"%(x,i,i*x),range(1,i+1))) ...

  2. github下载项目

  3. [HDU6196]happy happy happy

    题目大意: 有一个长度为n的数列,A和B两个人轮流从两端取数,B先取,A想使分数严格小于B且尽量接近B,问两人分数之差最小是多少. 思路: 折半搜索,先预处理出长度为part的最大差最小差,再预处理出 ...

  4. JBOSS集群和安装

    JBOSS集群和安装 http://jijian91.com/blog20071010/jboss-cluster-part5.html http://wing123.iteye.com/blog/3 ...

  5. bzoj 1047 单调队列

    做4次单调队列优化DP. /************************************************************** Problem: 1047 User: idy ...

  6. 读书笔记_Effective_C++_条款三十四:区分接口继承和实现继承

    这个条款书上内容说的篇幅比较多,但其实思想并不复杂.只要能理解三句话即可,第一句话是:纯虚函数只继承接口:第二句话是:虚函数既继承接口,也提供了一份默认实现:第三句话是:普通函数既继承接口,也强制继承 ...

  7. 你的C/C++程序为什么无法运行?揭秘Segmentation fault (1)

    什么让你对C/C++如此恐惧? 晦涩的语法?还是优秀IDE的欠缺? 我想那都不是问题,最多的可能是一个类似这样的错误: 段错误(Segmentation fault) 这是新手无法避免的错误,也是老手 ...

  8. 深入理解 Java中的 流 (Stream)

    首先,流是什么? 流是个抽象的概念.是对输入输出设备的抽象,Java程序中,对于数据的输入/输出操作都是以"流"的方式进行.设备能够是文件,网络,内存等. 流具有方向性,至于是输入 ...

  9. linux驱动移植的重要数据结构

    转载:http://www.embeddedlinux.org.cn/html/jishuzixun/201304/14-2538.html 对于嵌入式 Linux 系统来说,有各种体系结构的处理器和 ...

  10. sql语句分组/排序/计算总数/连接等sql语句书写

    1.什么是表连接? 答:比如两张表,要获取的信息来自两张表,就需要通过外键的形式进行两张表的连接.最后产后组合信息. 表连接是通过join连接的.表连接说白了就是产生一个大表.表连接也都是用于查询上的 ...