文档章节

Android之PullToRefresh的使用方法

有名者赫赫
 有名者赫赫
发布于 2015/04/18 13:14
字数 499
阅读 14509
收藏 10

###android studio 导入 PullToRefresh

// 下载
https://github.com/chrisbanes/Android-PullToRefresh
// 解压,得到 extras,sample,library(主要)
Android-PullToRefresh-master -> library
// 在你项目的根目录创建一个lib目录
[PATH]
[app]
    [src]
    [res]
    [build]
    build.gradle
    ...
[build]
[gradle]
[lib]
    // 将 library 重名名为 pull
    [pull]
        [src]
        [res]
        [build]
        ... 
build.gradle
settings.gradle
...
// 修改 settings.gradle 
include ':app', ':lib:pull'
// 修改 [app]/build.gradle
dependencies {
    // Library
    compile project(':lib:pull')
}
// 创建 [lib]/[pull]/build.gradle
apply plugin: 'android-library'
android {
    compileSdkVersion 17
    buildToolsVersion "21.1.2"
    sourceSets {
    main {
        manifest.srcFile 'AndroidManifest.xml'
        java.srcDirs = ['src']
        resources.srcDirs = ['src']
        aidl.srcDirs = ['aidl']
        renderscript.srcDirs = ['src']
        res.srcDirs = ['res']
        assets.srcDirs = ['assets']
    }
    }
}
// 完成   

###使用 PullToRefresh 刷新 ListView

//  在 activity_main.xml 增加一个 PullToRefreshListView
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <com.handmark.pulltorefresh.library.PullToRefreshListView
    android:id="@+id/left_drawer"
    android:layout_width="240dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:choiceMode="singleChoice"
    android:dividerHeight="1px"
    android:divider="#ff000000"
    android:background="#ffffffff"
    android:layout_alignParentTop="true"
    android:layout_alignParentEnd="true"
    android:layout_alignParentStart="true" />
</RelativeLayout>
// 在 MainActivity
public class MainActivity extends Activity {
    PullToRefreshListView lv;
    private String[] mListTitle = {"姓名", "性别", "年龄", "居住地", "邮箱"};
    private String[] mListStr = {"雨松MOMO", "男", "25", "北京",
        "xuanyusong@gmail.com"};
    ListView mListView = null;
    ArrayList<Map<String, Object>> mData = new ArrayList<Map<String, Object>>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // 获取 PullToRefreshListView View
    lv = (PullToRefreshListView) findViewById(R.id.left_drawer);
    // ....
    int lengh = mListTitle.length;
    for (int i = 0; i < lengh; i++) {
        Map<String, Object> item = new HashMap<String, Object>();
        item.put("title", mListTitle[i]);
        item.put("text", mListStr[i]);
        mData.add(item);
    }
    // ...
    SimpleAdapter adapter = new SimpleAdapter(this, mData, android.R.layout.simple_list_item_2,
         new String[]{"title", "text"}, new int[]{android.R.id.text1, android.R.id.text2});
    // 将 SimpleAdapter 设置到 PullToRefreshListView
    lv.setAdapter(adapter);
    // 刷新事件监听
    lv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<ListView>() {
        @Override
        public void onRefresh(PullToRefreshBase<ListView> refreshView) {
        // ...
        new AsyncTask<Void, Void, Void>() {
            @Override
            protected Void doInBackground(Void... params) {
            // 处理刷新任务
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return null;
            }
            @Override
            protected void onPostExecute(Void reslst)
            {
            // 更行内容,通知 PullToRefresh 刷新结束
            lv.onRefreshComplete();
            }
        }.execute();
        }
    });
    }
}

上面转载自点击查看 如果需要同时实现下拉刷新和上拉加载,实现OnRefreshListener2,重写onPullDownToRefresh和onPullUpToRefresh方法

//mListView是PullToRefreshListView实例
mListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {

            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView){
                new GetDataTask().execute(LOAD_REFRESH);


            }
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView){
                new GetDataTask().execute(LOAD_MORE);
            }
        }

        );
        //设置PullRefreshListView上提加载时的加载提示
        mListView.getLoadingLayoutProxy(false, true).setPullLabel("上拉加载...");
        mListView.getLoadingLayoutProxy(false, true).setRefreshingLabel("正在加载...");
        mListView.getLoadingLayoutProxy(false, true).setReleaseLabel("松开加载更多...");
        // 设置PullRefreshListView下拉加载时的加载提示
        mListView.getLoadingLayoutProxy(true, false).setPullLabel("下拉刷新...");
        mListView.getLoadingLayoutProxy(true, false).setRefreshingLabel("正在刷新...");
        mListView.getLoadingLayoutProxy(true, false).setReleaseLabel("松开刷新...");

本文转载自:

有名者赫赫
粉丝 1
博文 29
码字总数 8907
作品 0
武汉
程序员
私信 提问
[Android]滑动刷新ListView——android-pulltorefresh使用方法解析

现在很多android应用程序,比如新浪微博,在联网刷新内容时,都有一个滑动刷新的ListView,用户将内容下滑,就会有新的结果呈现。如下图所示: 上图中的功能是一个开源的项目android-pulltor...

亭子happy
2012/09/10
5.8K
1
PullToRefreshListView 应用讲解

转载于http://blog.csdn.net/mmjiajia132/article/details/40397813 PullToRefreshListView 用法和ListView 没有什么区别 listview能用的属性 pulltorefresh也能用 我一直认为动手是最好的学...

程序袁_绪龙
2015/08/02
208
0
腾讯微博android客户端 (开源软件)

2013年底,完全采用开源中国客户端的UI,修改了个腾讯微博客户端, 需要熟悉腾讯开放平台API的同学可以看看,算是对社区的回馈吧! 项目介绍:http://www.oschina.net/p/android-hao 相关学习...

jxlgzwh
2014/10/29
810
1
android中下拉刷新的实现

项目:https://github.com/chrisbanes/Android-PullToRefresh 文档:https://github.com/chrisbanes/Android-PullToRefresh/wiki/Quick-Start-Guide 以oschina项目为例: 1.实现listview的ite......

海洋2012
2015/02/26
8
0
Android Studio 如何导入开源库?

android开发小白一枚,开发环境:Android Studio ,想用github的开源库,像Android-PullToRefresh。网上给的导入方法都是Eclipse,自己尝试➕百度,还是错误频出,不会用开源库。 谢谢大家了...

ThaiZen
2015/12/17
1K
3

没有更多内容

加载失败,请刷新页面

加载更多

谁说多功能和低价格不能兼得?Aspose系列产品1024购买指南请查收!

你还在为了Word、Excel、PDF、CAD等文档格式转换而发愁吗? 你是否在寻找一款能够在应用程序中文档管理的工具呢? Aspose——支持100多种文件格式创建、编辑、转换和打印! 往下看,找一找哪...

mnrssj
26分钟前
3
0
hbase客户端API

本章介绍用于对HBase表上执行CRUD操作的HBase Java客户端API。 HBase是用Java编写的,并具有Java原生API。因此,它提供了编程访问数据操纵语言(DML)。 HBaseConfiguration类 添加 HBase 的配...

水木星辰
26分钟前
3
0
[插件化开发] 1. 初识OSGI

初识 OSGI 背景 当前product是以solution的方式进行售卖,但是随着公司业务规模的快速夸张,随之而来的是新客户的产品开发,老客户的产品维护,升级以及修改bug,团队的效能明显下降,为了解...

IsaacZhang
26分钟前
4
0
Webstorm 环境使用 nuxt.js 做开发,@ 和 ~ 别名配置

好的IDE + 好的代码提示 = 高效率的开发 webstorm 设置@和~别名,有助于代码查看和跳转. step 0 在项目下创建一个webpack.config.js,内容如下: const path = require('path')module.exp...

皇虫
30分钟前
3
0
Knative 实战:基于 Knative Serverless 技术实现天气服务-下篇

上一期我们介绍了如何基于 Knative Serverless 技术实现天气服务-上篇,首先我们先来回顾一下上篇介绍的内容: 通过高德天气 API 接口,每隔 3 个小时定时发送定时事件,将国内城市未来 3 天...

Mr_zebra
48分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部