Android实现上拉加载更多功能以及下拉刷新功能,

采用了目前比较火的PullToRefresh,他是目前实现比较好的下拉刷新的类库。

目前他支持的控件有:ListView, ExpandableListView,GridView,WebView等。

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

首先第一步当然是导入libriay到咱们的项目了,具体导入方式,这里不再赘述。

下面是个例子采用的是ListView,当然其余的和这个类似

1、布局文件activity_main.xml

01 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
02     xmlns:tools="http://schemas.android.com/tools"
03     android:layout_width="match_parent"
04     android:layout_height="match_parent"
05     tools:context=".MainActivity" >
06  
07       <com.handmark.pulltorefresh.library.PullToRefreshListView
08         android:id="@+id/pull_refresh_list"
09         android:layout_width="fill_parent"
10         android:layout_height="fill_parent" />
11 </RelativeLayout>

2、要实现下拉刷新的功能很简单,只需要实现OnRefreshListener的OnRefresh方法即可。这里说一下如何实现上拉和下拉分别执行不同的操作。

这里参考了http://blog.csdn.net/ueryueryuery/article/details/17440465

原理是:根据下拉和上拉显示的布局的可见状态类区分上拉还是下拉,然后执行相应操作。

在PullToRefresh的类库的com.handmark.pulltorefresh.library包下,打开PullToRefreshBase.java,在这个类的最后面添加如下代码:

1 public boolean isHeaderShown() {
2     return getHeaderLayout().isShown();
3 }
4  
5 public boolean isFooterShown() {
6     return getFooterLayout().isShown();
7 }

3、在Activity的代码如下:

01 public class MainActivity extends ListActivity {
02  
03     private PullToRefreshListView mPullToRefreshListView;
04      
05     private LinkedList<String> mItemList;
06     private ArrayAdapter<String> adapter;
07      
08     private Context context;
09     @Override
10     protected void onCreate(Bundle savedInstanceState) {
11         super.onCreate(savedInstanceState);
12         setContentView(R.layout.activity_main);
13         context = this;
14         initData();
15          
16         adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mItemList);
17          
18         //初始化控件
19         mPullToRefreshListView = (PullToRefreshListView)findViewById(R.id.pull_refresh_list);
20         ListView mListView = mPullToRefreshListView.getRefreshableView();
21         mListView.setAdapter(adapter);
22          
23         //设置pull-to-refresh模式为Mode.Both
24         mPullToRefreshListView.setMode(Mode.BOTH);
25          
26         //设置上拉下拉事件
27         mPullToRefreshListView.setOnRefreshListener(new OnRefreshListener<ListView>() {
28  
29             @Override
30             public void onRefresh(PullToRefreshBase<ListView> refreshView) {
31                  
32                 if (refreshView.isHeaderShown()){
33                     Toast.makeText(context, "下拉刷新",Toast.LENGTH_SHORT).show();
34                     //下拉刷新 业务代码
35                 }else {
36                     Toast.makeText(context, "上拉加载更多",Toast.LENGTH_SHORT).show();
37                     //上拉加载更多 业务代码
38                 }
39                  
40             }
41         });
42          
43     }
44  
45  
46     private void initData(){
47         //初始化数据
48         mItemList = new LinkedList<String>();
49         mItemList.addAll(Arrays.asList(data));
50          
51     }
52      
53     private String[] data  = new String[]{"data1","data2","data3","data4","data5","data6",
54             "data1","data2","data3","data4","data5","data6"};
55 }

如上代码所示,在OnRefresh的实现代码中,用以区分上拉还是下拉,关键代码如下:

1 if (refreshView.isHeaderShown()){
2                     Toast.makeText(context, "下拉刷新",Toast.LENGTH_SHORT).show();
3                     //下拉刷新 业务代码
4                 }else {
5                     Toast.makeText(context, "上拉加载更多",Toast.LENGTH_SHORT).show();
6                     //上拉加载更多 业务代码
7                 }

至此,运行项目,可以得到演示结果了

原文地址 : http://www.dutycode.com/post-13.html

我的博客:http://www.dutycode.com

参考网址:http://blog.csdn.net/ueryueryuery/article/details/17440465

android ListView上拉加载更多 下拉刷新功能实现(采用pull-to-refresh)的更多相关文章

  1. mui的上拉加载更多 下拉刷新 自己封装的demo

    ----------------------------------------------- 这是一个非常呆萌的程序妹子,深夜码的丑代码------------------------------- ...

  2. mui实现分页上拉加载更多 下拉刷新数据的简单实现 移动端下拉上拉

    空下来把mui上拉加载更多,下拉刷新数据做了一个简单的实现,希望可以帮助到需要的朋友 demo项目的结构 <!DOCTYPE html> <html> <head> ...

  3. android 支持上拉加载,下拉刷新的列表控件SwipeRefreshLayout的二次封装

    上拉加载,下拉刷新的列表控件,大家一定都封装过,或者使用过 源代码,我会在最后贴出来 这篇代码主要是为了解决两个问题 1.滑动冲突得问题 2.listview无数据时,无数据布局的展示问题 下方列出的 ...

  4. 你必须了解的RecyclerView的五大开源项目-解决上拉加载、下拉刷新和添加Header、Footer等问题

    前段时间做项目由于采用的MD设计,所以必须要使用RecyclerView全面代替ListView.但是开发中遇到了需要实现RecyclerView上拉加载.下拉刷新和添加Header以及Footer等 ...

  5. vue.js移动端app实战4:上拉加载以及下拉刷新

    上拉加载以及下拉刷新都是移动端很常见的功能,在搜索或者一些分类列表页面常常会用到. 跟横向滚动一样,我们还是采用better-scroll这个库来实现.由于better已经更新了新的版本,之前是0.几 ...

  6. 移动端上拉加载,下拉刷新效果Demo

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. vue-scroller实现vue单页面的上拉加载和下拉刷新问题

    在vue中如何简单的实现页面的上拉加载和下拉刷新,在这里我推荐使用vue-scrolle插件. vue-scrolle的基本使用方法: 1.下载 npm i vue-scroller -D 2.导包 ...

  8. 使用mescroll实现上拉加载与下拉刷新

    现在上拉加载与下拉刷新几乎已经是移动端必备功能之一了,自己实现一个太麻烦,但是好用的插件又非常少.之前看到网上很多人都在用iScroll,于是也尝试用它做了几个DEMO,但或多或少都有一些问题,比如这 ...

  9. C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法

    C#构造方法(函数)   一.概括 1.通常创建一个对象的方法如图: 通过  Student tom = new Student(); 创建tom对象,这种创建实例的形式被称为构造方法. 简述:用来初 ...

随机推荐

  1. 文件服务——Vsftpd

    文件传输协议(FTP): 能够让用户在互联网中上传.下载文件的文件协议,FTP服务就是支持FTP传输协议的主机,要想完成文件传输则需要FTP服务端和FTP客户端的配合才行. 通常用户使用FTP客户端软 ...

  2. php 中 isset()函数 和 empty()函数的区别

    首先这两个函数都是用来测试变量的状态: isset()函数判断一个变量是否在 如果存在返回true  否则返回false empty()函数判断一个变量是否为空,如果为空返回true 否则返回fals ...

  3. php新特性--持续更新

    命名空间 在其他语言中不算新鲜事,但php是5.3.0中引入,具体定义就不复述了,其主要作用是 封装和组织相关php类 .命名空间被引入之前php主要是通过Zend方式组织代码,这种方式带来的问题是类 ...

  4. 宅男福利--利用Python简单爬图

    Ver beta..代码粗陋. 使用说明以Windows为例, Python版本为2.7.6 确认你电脑已经安装了Python, Windows默认安装路径为C:\Python27.如果没有安装,先下 ...

  5. 折腾了一早上的C# WPF ListView+Grid 实现图片+文字 自动换行排列 类似Windows资源管理器效果

    <ListBox Name="lstFileManager" Background ="Transparent" ItemsSource="{B ...

  6. hdu 2079 选课时间

    hdu 2079 选课时间 题意:选的学分总和为n,并且学分为a的课有b种,总共有K(1<=k<=8)种学分不同的课,并且要选的学分最多为40:问选课方案有多少种?(学分相同的课即认为相同 ...

  7. 组态王6.55WEB全新发布步骤

    转载请... 算了 估计没有人转..自己留着看 目的: 本教程通过组态王6.55实现一个WEB服务器和一个WEB画面的客户端,总共两个工程.服务器工程名为 Server , 客户点为 Client.S ...

  8. 2014年度辛星html教程夏季版第八节

    经过前面七节的学习,我感觉大家的HTML的功底也差不多了,而且我特别的删去了某些东西,比如框架,如果回到几年前,那么框架是非常流行的,但是现在都到了2014年了,这些东西早就该被遗忘了,因此,我果断的 ...

  9. 关于博客名“大话济公”的说明

    其实本来没打算起这个名字的,换了几个名字都被占用了(无语啊...).最近呢,我在研究<济公传>,对于济公的传说比较喜欢,尤其是这个任务,诙谐幽默,同时有时时刻刻在帮助有困难的群众,虽然是个 ...

  10. 我的PHP之旅--SQL语句

    SQL语句 结构化查询语言(Structured Query Language)简称SQL,是一种操作数据的语言. 增加记录 INSERT INTO table_name(字段1, 字段2, 字段3) ...