下拉刷新上拉加载之PullToRefreshListView的用法

一、导入library

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

as中file-》new-》import module,导入下载包种的library目录,会自动转成as的library模块,并生成gradle文件,记得修改gradle中编译sdk版本和编译工具的版本:

需要将第三方库中build.gradle下编译器版本改成和工程项目的一致

  如,项目的编译器版本为

    compileSdkVersion 23
    buildToolsVersion "23.0.2"

  如果默认配置为如下版本,不修改则会出现异常。

    compileSdkVersion 17
    buildToolsVersion "21.1.2"

如果编译的sdk为23,会出现语法错误,把不再支持的FloatMath改成Math即可,因为前者已经过时

导入完毕后,在工程项目中添加对此library的依赖即可

二。布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <!--    就是相当于ListView控件,用这段来代替原是ListView控件的代码 -->
    <com.handmark.pulltorefresh.library.PullToRefreshListView
        xmlns:ptr="http://schemas.android.com/apk/res-auto"
        android:id="@+id/pull_refresh_list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:cacheColorHint="#00000000"
        android:divider="#19000000"
        android:dividerHeight="4dp"
        ptr:ptrDrawable="@mipmap/detail_icon_update"
        ptr:ptrAnimationStyle="flip"//设置
        android:fastScrollEnabled="false"
        android:footerDividersEnabled="false"
        android:headerDividersEnabled="false"
        android:smoothScrollbar="true" />
</LinearLayout>  

ptr是pullToRefresh的配置属性 使用是需要添加 xmlns:ptr="http://schemas.android.com/apk/res-auto"

ptr:ptrDrawable=“” 上拉下拉图标
ptr:ptrAnimationStyle=""  图标动画  取值: flip:翻转 rotate旋转
ptr:ptrHeaderBackground=""  上拉下拉时 头部的背景色
ptr:ptrHeaderTextColor=""     上拉下拉时 文字颜色

三。初始化PullToRefreshListView
private void initView() {
    mPullRefreshListView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list);
    mPullRefreshListView.setMode(PullToRefreshBase.Mode.BOTH);
    ILoadingLayout layoutHead = mPullRefreshListView.getLoadingLayoutProxy(true, false);
    layoutHead.setRefreshingLabel("下拉刷新");
    layoutHead.setRefreshingLabel("正在载入......");
    layoutHead.setReleaseLabel("放开刷新");

    ILoadingLayout layoutFoot = mPullRefreshListView.getLoadingLayoutProxy(false,true);
    layoutFoot.setRefreshingLabel("上拉加载更多");
    layoutFoot.setRefreshingLabel("正在加载......");
    layoutFoot.setReleaseLabel("放开加载");
}
四。设置监听
mPullRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
    @Override
    public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
        new GetDataTask().execute();
    }

    @Override
    public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
        mListItems.addLast("1");
        new GetDataTask().execute();
    }
  });
 private class GetDataTask extends AsyncTask<Void, Void, String> {
        //后台处理部分
        @Override
        protected String doInBackground(Void... params) {

            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
            }
            String str="Added after refresh...I add";
            return str;
        }

        //这里是对刷新的响应,可以利用addFirst()和addLast()函数将新加的内容加到LISTView中
        //根据AsyncTask的原理,onPostExecute里的result的值就是doInBackground()的返回值
        @Override
        protected void onPostExecute(String result) {
            //在头部增加新添内容
            mListItems.addFirst(result);
//            mListItems.addLast(result);
            //通知程序数据集已经改变,如果不做通知,那么将不会刷新mListItems的集合
            mAdapter.notifyDataSetChanged();
            // Call onRefreshComplete when the list has been refreshed.
            mPullRefreshListView.onRefreshComplete();
            super.onPostExecute(result);
        }
    }
五.整个项目黏贴代码
package com.kxd.pulltorefreshtest;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

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

import java.util.Arrays;
import java.util.LinkedList;

public class MainActivity extends Activity {
    private String[] mStrings = { "Abbaye de Belloc", "Abbaye du Mont des Cats", "Abertam", "Abondance", "Ackawi",
            "Acorn", "Adelost", "Affidelice au Chablis", "Afuega'l Pitu", "Airag", "Airedale", "Aisy Cendre",
            "Allgauer Emmentaler", "Abbaye de Belloc", "Abbaye du Mont des Cats", "Abertam", "Abondance", "Ackawi",
            "Acorn", "Adelost", "Affidelice au Chablis", "Afuega'l Pitu", "Airag", "Airedale", "Aisy Cendre",
            "Allgauer Emmentaler" };
    private LinkedList<String> mListItems;
    private PullToRefreshListView mPullRefreshListView;
    private ArrayAdapter<String> mAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();
        mPullRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                new GetDataTask().execute();
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
                mListItems.addLast("1");
                new GetDataTask().execute();
            }
          });

        mListItems = new LinkedList<String>();
        mListItems.addAll(Arrays.asList(mStrings));
        mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mListItems);

        //这两个绑定方法用其一
        // 方法一
//       mPullRefreshListView.setAdapter(mAdapter);
        //方法二
        ListView actualListView = mPullRefreshListView.getRefreshableView();
        actualListView.setAdapter(mAdapter);
    }

    private void initView() {
        mPullRefreshListView = (PullToRefreshListView) findViewById(R.id.pull_refresh_list);
        mPullRefreshListView.setMode(PullToRefreshBase.Mode.BOTH);
        ILoadingLayout layoutHead = mPullRefreshListView.getLoadingLayoutProxy(true, false);
        layoutHead.setRefreshingLabel("下拉刷新");
        layoutHead.setRefreshingLabel("正在载入......");
        layoutHead.setReleaseLabel("放开刷新");

        ILoadingLayout layoutFoot = mPullRefreshListView.getLoadingLayoutProxy(false,true);
        layoutFoot.setRefreshingLabel("上拉加载更多");
        layoutFoot.setRefreshingLabel("正在加载......");
        layoutFoot.setReleaseLabel("放开加载");
    }


    private class GetDataTask extends AsyncTask<Void, Void, String> {
        //后台处理部分
        @Override
        protected String doInBackground(Void... params) {

            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
            }
            String str="Added after refresh...I add";
            return str;
        }

        //这里是对刷新的响应,可以利用addFirst()和addLast()函数将新加的内容加到LISTView中
        //根据AsyncTask的原理,onPostExecute里的result的值就是doInBackground()的返回值
        @Override
        protected void onPostExecute(String result) {
            //在头部增加新添内容
            mListItems.addFirst(result);
//            mListItems.addLast(result);
            //通知程序数据集已经改变,如果不做通知,那么将不会刷新mListItems的集合
            mAdapter.notifyDataSetChanged();
            // Call onRefreshComplete when the list has been refreshed.
            mPullRefreshListView.onRefreshComplete();
            super.onPostExecute(result);
        }
    }
}

### 回答1: Active Directory服务是种由微软公司开发的网络服务,它提供了种集中管理和控制网络资源的方式。它可以在中集中管理用户、计算机、应用程序和其他网络资源,从而提高了网络的安全性和可管理性。Active Directory服务还提供了些高级功能,如单点登录、组策略管理和名系统(DNS)集成等,使得网络管理员可以更加轻松地管理和维护网络。 ### 回答2: Active Directory服务(Active Directory Domain Services,简称AD DS)是微软公司的项用于管理和组织网络资源的目录服务。它是种基于LDAP(轻量级目录访问协议)的目录服务,可以让用户和管理员方便地管理和访问网络中的资源。 AD DS的主要功能包括用户身份认证、访问控制、组管理和资源管理等。通过AD DS,管理员可以集中管理和配置用户和计算机的访问权限,确保系统安全。同时,AD DS还提供了的集中管理功能,管理员可以通过控制器管理中的所有对象,并在中实施策略。 AD DS还支持单点登录功能,用户只需在登录到之后,即可自动访问到所属中的资源,而无需再次输入用户名和密码。这大大提高了用户的工作效率。 此外,AD DS还支持多架构,可以通过建立信任关系实现跨资源的访问和管理。管理员可以维护多个之间的信任关系,实现用户和资源的统管理。 总而言之,AD DS是种强大的目录服务,可以实现用户和资源的集中管理和访问控制,提高网络系统的稳定性和安全性。它是企业网络管理的重要组成部分,为企业提供了高效的身份认证和资源管理功能,增强了企业的生产力和安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值