PullToRefresh的简单使用

简介: PullToRefresh的简单使用

PullToRefresh是一个开源的第三方下拉刷新、上拉加载控件

下载

https://github.com/chrisbanes/Android-PullToRefresh,点击Download ZIP下载。

导入项目

下载完成后,解压文件。

我使用的AndroidStudio,点击file-new-import module,选中已解压的文件夹,

选择完成后,AS可能会有导入项目的提示,直接按默认选择就好。

添加到自己的项目

导入后AS会进行Gradle配置,配置完成后选中自己的项目按F4或者右键Open Module Settings

在弹出的对话框上,选择Dependencies,点击右边的加号–module dependency,选择刚才导入的项目。

这样之后就能在自己的项目中使用PullToRefresh了。

使用

先在布局中添
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="demo.ado.com.pulltorefresh.MainActivity">

    <com.handmark.pulltorefresh.library.PullToRefreshListView
        xmlns:ptr="http://schemas.android.com/apk/res-auto"
        android:id="@+id/pull"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        />
</RelativeLayout>
Activity中使用

然后直接在Activity中就可以了使用了,就像使用ListView一样。

package demo.ado.com.pulltorefresh;

import android.os.AsyncTask;
import android.os.SystemClock;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ListView;

import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
    private PullToRefreshListView pullToRefreshListView;
    private ArrayList<String> list=new ArrayList<String>();;
    int a=1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initUi();
    }

    private void initUi() {


        addLine();
        //实例化pull
        pullToRefreshListView= (PullToRefreshListView) findViewById(R.id.pull);
        //设置上拉和下拉
        pullToRefreshListView.setMode(PullToRefreshBase.Mode.BOTH);
        final ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list);
        pullToRefreshListView.setAdapter(adapter);
        pullToRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<ListView>() {
            @Override
            public void onRefresh(PullToRefreshBase<ListView> refreshView) {
                new GetDataTask().execute();
                //加载数据后,更新adapter。
                adapter.notifyDataSetChanged();
            }
        });
    }
    /**
    **刷新一次就加载10行
    **/
    private void addLine() {
        for (int i = 0; i <10 ; i++) {
            list.add("这是第"+a+"行数啊");
            a++;
        }
    }

    private class GetDataTask extends AsyncTask<Void,Void,String[]>{

        @Override
        protected String[] doInBackground(Void... voids) {
            //模拟数据加载,停止2秒
            SystemClock.sleep(2000);
            //然后添加10行数据
            addLine();
            return null;
        }

        @Override
        protected void onPostExecute(String[] result) {
            pullToRefreshListView.onRefreshComplete();
            super.onPostExecute(result);
        }
    }
}


效果图

相关文章
WK
|
Python
pyhon设计规范
Python设计规范涵盖代码布局、命名、注释、函数编写、模块化设计等方面,确保代码的可读性和可维护性。具体包括:使用4个空格缩进、行宽不超过79字符、变量和函数名全小写、类名首字母大写,采用驼峰命名法,添加内联注释和文档字符串,函数长度不超过20行,单一职责,明确返回值,模块化设计避免循环依赖,减少全局变量使用,遵循PEP 8规范。遵循这些规范有助于编写清晰、可读、可维护的Python代码。
WK
968 2
|
存储 缓存 Prometheus
阿里云下一代可观测时序引擎-MetricStore 2.0
我们开发了 MetricStore 2.0 版本,从存储到计算进行了全面升级,致力于成为阿里云下一代可观测时序引擎。
880 47
|
前端开发 数据库
Promise.allSettled() 和 Promise.all() 有什么区别?
Promise.allSettled() 和 Promise.all() 有什么区别?
707 173
|
前端开发 开发者
HarmonyOS实战:自定义时间选择器
在鸿蒙开发中,官方提供的默认时间选择器可能无法满足特定需求。本文分享了自定义时间选择器的实现过程:通过 TextPicker 控件实现年月日及时分的选择,支持默认选中当前时间、精确到时分,并注意闰年计算与日期格式处理。代码中使用 Promise 处理耗时的日期计算,确保显示和逻辑正确。总结指出,尽管看似简单,但需关注时间计算、格式化等细节。快动手试试吧!
476 1
|
JSON 算法 安全
harmony-utils之RSA,RSA加解密
harmony-utils是一款专为HarmonyOS打造的高效工具库,提供丰富的实用功能,助力开发者快速构建鸿蒙应用。其RSA模块实现非对称加解密、签名验签等功能,支持密钥生成、数据加密解密及分段处理,适用于安全通信与身份验证等场景。
487 0
|
前端开发 JavaScript
React Tailwind CSS
10月更文挑战第12天
560 1
|
Android开发
安卓使用RecycleView+SmartRefreshLayout+CommonAdapter实现最简单上拉刷新,下拉加载
安卓使用RecycleView+SmartRefreshLayout+CommonAdapter实现最简单上拉刷新,下拉加载
576 1
安卓使用RecycleView+SmartRefreshLayout+CommonAdapter实现最简单上拉刷新,下拉加载
|
JavaScript 内存技术
nvm 切换版本失效?这个方法100%解决
NVM是一个工具,类似于一个“开关”,可以帮助我们在同一台电脑上安装和切换不同版本的Node.js
9975 1
nvm 切换版本失效?这个方法100%解决
|
Ubuntu 网络协议 Linux
【Linux】Android平板上远程连接Ubuntu服务器code-server进行代码开发
【Linux】Android平板上远程连接Ubuntu服务器code-server进行代码开发
620 0
|
开发框架 JavaScript 前端开发
Vue框架Element UI教程-安装环境搭建(一)
Vue框架Element UI教程-安装环境搭建(一)
457 0