PullToRefreshListView 具体使用方法

   准备工作:
第一步:导入pullToRefresh的工程,注意需要16版本的sdk,与19版本的构建工具( 需要连网下载)
第二步:将工程作为依赖库添加到自己的工程中

使用步骤:
第一步:在布局文件中添加PullToRefreshScrollView组件

   ptr:ptrDrawable="@drawable/default_ptr_flip":刷新时显示的图片
    ptr:ptrAnimationStyle="flip":刷新的图片以何种方式显示出来
    ptr:ptrHeaderBackground="#383838":刷新时头部的布局
    ptr:ptrHeaderTextColor="#FFFFFF":刷新时头部字体的颜色


    还需要添加以下的命名空间
   xmlns:ptr="http://schemas.android.com/apk/res-auto"

mainactivity


//设置模式  BOTH:支持上拉加载 下拉刷新   PULL_FROM_END:仅支持加载更多    PULL_FROM_START:下拉刷新

 plv.setMode(PullToRefreshBase.Mode.BOTH);

//关闭头尾布局
            plv.onRefreshComplete();

以下可加可不加:


    /*这里通过getLoadingLayoutProxy 方法来指定上拉和下拉时显示的状态的区别,第一个true 代表下来状态 ,第二个true 代表上拉的状态
如果想区分上拉和下拉状态的不同,可以分别设置*/


        ILoadingLayout startLabels = plv.getLoadingLayoutProxy(true, false);
        startLabels.setPullLabel("下拉刷新一下");
        startLabels.setRefreshingLabel("正在玩命加载...");
        startLabels.setReleaseLabel("放开我就刷新");



        ILoadingLayout endLabels = plv.getLoadingLayoutProxy(false, true);
        endLabels.setPullLabel("上拉刷新");
        endLabels.setRefreshingLabel("正在载入...");

        endLabels.setReleaseLabel("放开刷新...");


xml中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
//注意点
    xmlns:ptr="http://schemas.android.com/apk/res-auto"
    tools:context="com.example.a11561.pulltoshauxin.MainActivity">


    <com.handmark.pulltorefresh.library.PullToRefreshListView
        android:id="@+id/plvs"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        ptr:ptrDrawable="@drawable/default_ptr_flip"
        ptr:ptrAnimationStyle="flip"
        ptr:ptrHeaderBackground="#383838"
        ptr:ptrHeaderTextColor="#FFFFFF"
        >

    </com.handmark.pulltorefresh.library.PullToRefreshListView>

</LinearLayout>




***********************************************************************************************************************

Mainactivity


package com.example.a11561.pulltoshauxin;

import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;

import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    private PullToRefreshListView plv;
    private  int pathtype=1;
    private int types=1;//1代表刷新,2代表记载
    private String path="http://365jia.cn/news/api3/365jia/news/headline?page="+pathtype;
    private ArrayList<ResultDatas.DataBeanX.DataBean> baseDatas;
    private MyAdaper adaper;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        plv=findViewById(R.id.plvs);
        baseDatas =new ArrayList<ResultDatas.DataBeanX.DataBean>();

        initdatas();
        init();

    }

    private void init() {
        plv.setMode(PullToRefreshBase.Mode.BOTH);
        plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
                types=1;
                pathtype=1;
                path="http://365jia.cn/news/api3/365jia/news/headline?page="+pathtype;
                initdatas();
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
                types=2;
                pathtype++;
                path="http://365jia.cn/news/api3/365jia/news/headline?page="+pathtype;
                initdatas();
            }
        });

    }

    private void initdatas() {
        DatasTaks taks=new DatasTaks();
        taks.execute(path);
    }

    class DatasTaks extends AsyncTask<String,Integer,String>{

        @Override
        protected String doInBackground(String... strings) {

            HttpClient httpClient=new DefaultHttpClient();
            HttpGet httpGet=new HttpGet(strings[0]);
            try {
                HttpResponse response = httpClient.execute(httpGet);
                if(response.getStatusLine().getStatusCode()==200){
                    HttpEntity entity = response.getEntity();
                    String s = EntityUtils.toString(entity,"utf-8");
                    return s;
                }
            } catch (IOException e) {
                e.printStackTrace();
            }


            return null;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);

            Gson gson=new Gson();
            ResultDatas resultDatas = gson.fromJson(s, ResultDatas.class);
            List<ResultDatas.DataBeanX.DataBean> list = resultDatas.getData().getData();

            if(types==1){
                baseDatas.clear();
            }
            baseDatas.addAll(list);

            setadaper();
            //关闭头尾布局
            plv.onRefreshComplete();

        }
    }

    private void setadaper() {
        if(adaper==null){
            adaper=new MyAdaper(MainActivity.this,baseDatas);
            plv.setAdapter(adaper);
        }else{
            adaper.notifyDataSetChanged();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/lxd13699/article/details/80066346
今日推荐