您的位置:首页 > 移动开发 > Android开发

PullToRefreshScrollView的应用

2017-12-17 20:39 267 查看
//使用之前需要导入依赖库

compile 'com.github.userswlwork:pull-to-refresh:1.0.0'

//布局

<?xml version="1.0" encoding="utf-8"?>

 <com.handmark.pulltorefresh.library.PullToRefreshScrollView

     xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:ptr="http://schemas.android.com/apk/res-auto"

     android:layout_width="match_parent"

     android:layout_height="match_parent"

     android:id="@+id/psv"

     ptr:ptrDrawable="@drawable/default_ptr_flip"

     ptr:ptrAnimationStyle="flip"

     ptr:ptrHeaderBackground="#383838"

     ptr:ptrHeaderTextColor="#FFFFFF">
    <!--banner-->

    <!--listview-->

    <!---ScrollView 只能有一个子孩子-->

    <LinearLayout

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:orientation="vertical">
        <com.youth.banner.Banner

            android:layout_width="match_parent"

            android:layout_height="200dp"

            android:id="@+id/mybanner"></com.youth.banner.Banner>
        <!--<ListView-->

            <!--android:layout_width="match_parent"-->

            <!--android:layout_height="match_parent"-->

            <!--android:id="@+id/lv"></ListView>-->
      <!--  在这里需要自定义listview,调用包名类名-->

    </LinearLayout>
</com.handmark.pulltorefresh.library.PullToRefreshScrollView>

//java代码==========================================================

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.widget.ListView;

import android.widget.ScrollView;
import com.google.gson.Gson;

import com.handmark.pulltorefresh.library.ILoadingLayout;

import com.handmark.pulltorefresh.library.PullToRefreshBase;

import com.handmark.pulltorefresh.library.PullToRefreshScrollView;

import com.youth.banner.Banner;
import java.util.ArrayList;

import java.util.List;
import zhanghaijiao.bawei.com.pulltorefresh_demo2.utils.MyNetTask;
public class MainActivity extends AppCompatActivity {
    private Banner myBanner;

    private PullToRefreshScrollView psv;

    private ListView listView;

    private String urlPart="https://api.tianapi.com/wxnew/?key=48a7d7193e11bd2dd4a683b6e2f90a4f&num=10&page=";

    private int pageIndex=1;

    private String url=urlPart+pageIndex;

    private MyAdapter adapter;

    private List<Result1.NewslistBean> datas=new ArrayList<>();
    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        myBanner = findViewById(R.id.mybanner);

        listView = findViewById(R.id.lv);

        psv = findViewById(R.id.psv);
        //初使化psv

        initPsv();

        //请求网络数据,展示轮播图

        MyNetTask task=new MyNetTask(new MyNetTask.IcallBack() {

            @Override

            public void getJsonData(String jsonStr) {

                Gson gson=new Gson();

                Result result = gson.fromJson(jsonStr, Result.class);

                //图片的url地址

                List<String> urls=new ArrayList<String>();

                List<Result.DataScrollBean> dataScroll = result.getDataScroll();

                for(int i=0;i<dataScroll.size();i++){

                    urls.add("http://www.93.gov.cn"+dataScroll.get(i).getIMAGEURL());

                }

                setBanner(urls);
            }

        });

        task.execute("http://www.93.gov.cn/93app/data.do?channelId=0&startNum=0");
        MyNetTask task1=new MyNetTask(new MyNetTask.IcallBack() {

            @Override

            public void getJsonData(String jsonStr) {

                Gson gson=new Gson();

                Result1 result1 = gson.fromJson(jsonStr, Result1.class);
                datas.addAll(result1.getNewslist());

                setAdapter();
            }

        });

        task1.execute(url);

    }
    private void initPsv() {

        //1.设置模式

        psv.setMode(PullToRefreshBase.Mode.BOTH);

        //2.设置头尾布局的文字

        ILoadingLayout headerLayout = psv.getLoadingLayoutProxy(true, false);

        headerLayout.setPullLabel("下拉刷新");

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

        headerLayout.setRefreshingLabel("正在刷新。。。。");
        ILoadingLayout footerLayout = psv.getLoadingLayoutProxy(false, true);

        footerLayout.setPullLabel("上拉加载");

        footerLayout.setReleaseLabel("放开加载");

        footerLayout.setRefreshingLabel("正在加载。。。。");
        //3.设置回调接口

        psv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() {

            @Override

            public void onPullDownToRefresh(PullToRefreshBase<ScrollView> pullToRefreshBase) {

                pageIndex=1;

                url=urlPart+pageIndex;

                MyNetTask task1=new MyNetTask(new MyNetTask.IcallBack() {

                    @Override

                    public void getJsonData(String jsonStr) {

                        Gson gson=new Gson();

                        Result1 result1 = gson.fromJson(jsonStr, Result1.class);

                        //清空

                        datas.clear();

                        //添加新数据到集合中

                        datas.addAll(result1.getNewslist());

                        setAdapter();

                        //关闭头尾布局

                        psv.onRefreshComplete();
                    }

                });

                task1.execute(url);
            }
            @Override

            public void onPullUpToRefresh(PullToRefreshBase<ScrollView> pullToRefreshBase) {

                //加载更多

                pageIndex++;

                url=urlPart+pageIndex;
                MyNetTask task1=new MyNetTask(new MyNetTask.IcallBack() {

                    @Override

                    public void getJsonData(Str
4000
ing jsonStr) {

                        Gson gson=new Gson();

                        Result1 result1 = gson.fromJson(jsonStr, Result1.class);
                        //添加新数据到集合中

                        datas.addAll(result1.getNewslist());

                        setAdapter();

                        //关闭头尾布局

                        psv.onRefreshComplete();
                    }

                });

                task1.execute(url);

            }

        });

    }
    public void setAdapter(){

        if(adapter==null){

            adapter=new MyAdapter(this,datas);

            listView.setAdapter(adapter);
        }else {

            adapter.notifyDataSetChanged();

        }

    }
//利用banner
    private void setBanner(List<String> urls) {

        //1.设置一个图片加载器

        myBanner.setImageLoader(new MyBannerLoader());

        //2.设置图片集合List<String> lists

        myBanner.setImages(urls);

        //3.启动

        myBanner.start();

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 氵凵彡 布局