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.PullToRefreshListViewandroid:id="@+id/lv_main"android:layout_width="fill_parent"android:layout_height="fill_parent"></com.handmark.pulltorefresh.library.PullToRefreshListView>
</LinearLayout>

配置:

@Overrideprotected 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 {@Overridepublic void onRefresh(PullToRefreshBase refreshView) {}}class MyRefreshListener2 implements PullToRefreshBase.OnRefreshListener2 {@Overridepublic void onPullDownToRefresh(PullToRefreshBase refreshView) {mList.clear();for (int i = 0; i < mStr.length; i++) {mList.add(mStr[i]);}new Thread(new MyRunnable()).start();}@Overridepublic 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() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what) {case 1:Log.i("handleMessage", "handleMessage");mListView.onRefreshComplete();mMyAdapter.notifyDataSetChanged();break;}}};@Overrideprotected 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 {@Overridepublic void onRefresh(PullToRefreshBase refreshView) {}}class MyRefreshListener2 implements PullToRefreshBase.OnRefreshListener2 {@Overridepublic void onPullDownToRefresh(PullToRefreshBase refreshView) {mList.clear();for (int i = 0; i < mStr.length; i++) {//添加数据
                mList.add(mStr[i]);}new Thread(new MyRunnable()).start();//执行延时
        }@Overridepublic 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 {@Overridepublic int getCount() {return mList.size();}@Overridepublic Object getItem(int i) {return mList.get(i);}@Overridepublic long getItemId(int i) {return i;}@Overridepublic 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 {@Overridepublic 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

转载于:https://www.cnblogs.com/yydcdut/p/4166123.html

Android -- PullToRefresh应用相关推荐

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

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

  2. Android PullToRefresh(下拉刷新)的使用详解

    开源项地址:https://github.com/chrisbanes/Android-PullToRefresh 在Android-PullToRefresh-master文件夹下,我们会看到还有三 ...

  3. android 自动加载下一页,Android PullToRefresh下拉到底部自动加载下一页

    有时候我们想要修改pullToRefresh直接拉到底部的是否自动加载下一页的东西这里有个方法可以供大家参考 private void scrollToBottom() { mListView.set ...

  4. Android开源介绍-UI组件

    终端的开发,UI的重要性不言而喻,如何快速开发出优雅漂亮的UI,android的一些开源UI组件,提供了很好的参考. 参考: oschina Android UI组件  最火的Android开源项目( ...

  5. Android 高级UI设计笔记08:Android开发者常用的7款Android UI组件(转载)

    Android开发是目前最热门的移动开发技术之一,随着开发者的不断努力和Android社区的进步,Android开发技术已经日趋成熟,当然,在Android开源社区中也涌现了很多不错的开源UI项目,它 ...

  6. Android UI 组件开源软件(一)

    Android显示GIF动画 GifView GifView 是一个为了解决android中现在没有直接显示gif的view,只能通过mediaplay来显示这个问题的项目,其用法和 ImageVie ...

  7. 最火的Android开源项目整理

    一.代码库 1.from  代码家 整理比较好的源码连接 *********************************************************************** ...

  8. Android最实用的各种技能点的网址链接(每天都会更新,希望大家用的上)

    Android 优秀项目汇总 Android 汇集CSDN.GitHub等最实用的良心之作-KING Android 仿抖音视频播放列表和评论列表等项目常用案例 这里有更多更炫的Android最常用最 ...

  9. 【收藏】Android开源项目和 框架

    Android四款系统架构工具      http://dev.yesky.com/281/35399281.shtml AOSP   http://source.android.com/index. ...

最新文章

  1. 程序员笔试面试基础知识资料整理
  2. 分布式服务防雪崩熔断器,Hystrix理论+实战
  3. Python中通过PyPDF2实现PDF合并
  4. lua transliterate实现(lua程序设计10.6练习10.3题)
  5. DCGAN baseline
  6. 性能之巅:Linux网络性能分析工具
  7. 江苏大学21考研计算机技术上岸
  8. NC17857起床困难综合症
  9. GNU ARM 汇编基础笔记
  10. 【计算机网络】计网笔记知识点整理篇(1-3章,后续章节持续更新)
  11. UIkit框架之轮播特效
  12. python 根据名称获取pid_python 使用标准库根据进程名获取进程的pid
  13. 设置透明主题引起动画失效以及打开其他应用闪现桌面图标的问题
  14. jetty 去掉项目名称访问
  15. 关于StringUtils的各种方法的功能、解析
  16. 放弃vlookup吧,这3种EXCEL多表关联方法“强得很”
  17. BYOD携带自己的设备办公
  18. 图神经网络(GNN)入门之旅(三)-拉普拉斯矩阵与GCN
  19. 数据共享-spark中共享变量深度解析
  20. 疯狂Java讲义(七)----第二部分

热门文章

  1. 龙卷风优化软件测试面试题,暑X好物大推荐,最强真无线降噪耳机带你开启夏日解压模式...
  2. 2导出指定表结构_大白话详解大数据hive知识点,老刘真的很用心(2)
  3. 周三多管理学第七版pdf_为什么说管理学原理是企业领导的必修课?
  4. android文件管理器,ES文件浏览器(com.estrongs.android.pop) - 4.2.4.6.1 - 应用 - 酷安
  5. 复原 IP 地址Python解法
  6. bbs php redis,LAMP+redis搭建discuz论坛
  7. wordpress留言板comments.php添加自定义字段,php – 如何自定义WordPress comment_form();
  8. vivado链接不上开发板最有可能原因
  9. 计算机负责指令代码的是,计算机组成原理习题2新版资料.doc
  10. classcastexception异常_内部类、异常以及 LeetCode 每日一题