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. 微信企业号 jsSDK wx.config报invalid signature错误,导致api接口无法使用

    最近在做公司定制化的时候发现一个问题,使用微信的语音API的时候微信报错,错误信息为:the permission value is offline verifying 但是诡异的是:同样的代码在我们 ...

  2. MVC , MVP , MVVM【转 阮一峰的网络日志】

    一.MVC MVC模式的意思是,软件可以分成三个部分. 视图(View):用户界面. 控制器(Controller):业务逻辑 模型(Model):数据保存 各部分之间的通信方式如下. View 传送 ...

  3. python正则实例

    # -*- coding: cp936 -*-import reidcardregex=r"^[1-9]\d{14}(\d{2}[0-9x])?$"print re.search( ...

  4. 关于APP,原生和H5开发技术的争论

    App的开发技术,目前流行的两种方式,原生和Html5.原生分了安卓平台和ios平台(还有小众的黑莓.死去的塞班就不说了),H5就是Html5. 目前争论不休的问题,在早先前争论CS,BS架构的软件系 ...

  5. C#线程总结

    using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using S ...

  6. 在VS中手工创建一个最简单的WPF程序

    如果不用VS的WPF项目模板,如何手工创建一个WPF程序呢?我们来模仿WPF模板,创建一个最简单的WPF程序. 第一步:文件——新建——项目——空项目,创建一个空项目. 第二步:添加引用,Presen ...

  7. hdu 4358 Boring counting 离散化+dfs序+莫队算法

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4358 题意:以1为根节点含有N(N <= 1e5)个结点的树,每个节点有一个权值(weight ...

  8. python与编码

    Python中的文字对象 Python 3.x中处理文字的对象有str, bytes, bytearray. bytes和bytearray可以使用除了用作格式化的方法(format, format_ ...

  9. java JNI 调试出现的错误

    java JNI 调试出现的错误 ERROR: JDWP Unable to get JNI 1.2 environment, jvm->GetEnv() return code = -2JDW ...

  10. IIS的Unicode漏洞攻击

    IIS有十多种常见漏洞,但利用得最多的莫过于Unicode解析错误漏洞.微软IIS 4.0/5.0在Unicode字符解码的实现中存在一个安全漏洞,用户可以远程通过IIS执行任意命令.当IIS打开文件 ...