PullToRefreshScrollView

 
加依赖 compile 'com.github.userswlwork:pull-to-refresh:1.0.0'
版本最低15
 
 
minSdkVersion 15
package com.pdj.bw.pulltorefreshscorview;

import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.widget.ImageView;
import android.widget.LinearLayout;
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 java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    private int pageIndex=1;
    private int operType=1;
    private String myurl="http://365jia.cn/news/api3/365jia/news/headline?page="+pageIndex;
    private ListView lv;
    private PullToRefreshScrollView plv;
    private List<String> urlpics = new ArrayList<>();
    private List<JsonData.DataBeanX.DataBean> datas=new ArrayList<>();
    private MyAdapter adapter;
    private ViewPager vp;
    private List<ImageView> lists;
    private LinearLayout po;
    private Handler mhandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            int i = vp.getCurrentItem();
            i++;
            vp.setCurrentItem(i);
            setSelectedPoint(i%lists.size());
            sendEmptyMessageDelayed(1,1000);
        }
    };


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        vp = findViewById(R.id.vp);
        lv = findViewById(R.id.lv);
        plv = findViewById(R.id.plv);
        po = findViewById(R.id.point);
        initPlv();
        requestData();
    }

    private void requestData() {
        new MyAsynckTask().execute(myurl);
    }
    class MyAsynckTask extends AsyncTask<String,Void,String>{

        @Override
        protected String doInBackground(String... strings) {
            try {
                URL url = new URL(strings[0]);
                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                urlConnection.setRequestMethod("GET");
                int i = urlConnection.getResponseCode();
                if(i==200){
                    InputStream inputStream = urlConnection.getInputStream();//得到服务器返回的数据流;
                    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                    StringBuilder stringBuilder = new StringBuilder();//可拼接字符串;
                    String temp = "";
                    while ((temp = bufferedReader.readLine()) != null) {
                        stringBuilder.append(temp);
                    }
                    String result = stringBuilder.toString();

                    return result;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            Gson gson = new Gson();
            JsonData data = gson.fromJson(s, JsonData.class);
            List<JsonData.DataBeanX.DataBean> beans = data.getData().getData();
            showPics(beans);
            if(operType==1){
                datas.clear();
            }
            datas.addAll(beans);
            setadapter();
            //关闭头尾布局
            plv.onRefreshComplete();

        }
    }
    private void showPics( List<JsonData.DataBeanX.DataBean> beans){
        urlpics.clear();
        urlpics.add("http://365jia.cn/uploads/"+beans.get(0).getPics().get(0));
        urlpics.add("http://365jia.cn/uploads/"+beans.get(1).getPics().get(0));
        urlpics.add("http://365jia.cn/uploads/"+beans.get(2).getPics().get(0));
        PgAdapter adapter = new PgAdapter(urlpics, MainActivity.this);
        vp.setAdapter(adapter);
        initPoint();
        mhandler.sendEmptyMessageDelayed(1,1000);
        }
    //设置选中的小圆点
    private  void setSelectedPoint(int pageIndex){
        for (int i = 0; i <lists.size() ; i++) {
            if(i==pageIndex){
                lists.get(i).setImageResource(R.mipmap.point_selected);
            }else {
                lists.get(i).setImageResource(R.mipmap.point_mormal);
            }

        }

    }

    private void initPoint() {
        lists=new ArrayList<>();
        //清空LinearLayout
        po.removeAllViews();
        for (int i = 0; i <urlpics.size() ; i++) {
            ImageView imageView=new ImageView(this);
            //设置它的布局参数
            LinearLayout.LayoutParams params=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
            params.setMargins(0,0,10,0);//设置右边的间隔
            if(i==0){
                imageView.setImageResource(R.mipmap.point_selected);//选中的小圆点
            }else{
                imageView.setImageResource(R.mipmap.point_mormal);
            }
            po.addView(imageView,params);

            lists.add(imageView);
        }

    }
    private void setadapter() {
        if(adapter==null){
            adapter = new MyAdapter(datas,MainActivity.this);
            lv.setAdapter(adapter);
        }else {
            adapter.notifyDataSetChanged();
        }

    }

    private void initPlv() {
        plv.setMode(PullToRefreshBase.Mode.BOTH);
        plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ScrollView> pullToRefreshBase) {

                int pageIndex=1;
                int operType=1;
                String myurl="http://365jia.cn/news/api3/365jia/news/headline?page="+pageIndex;
                //清空handler
                mhandler.removeCallbacksAndMessages(null);
                requestData();
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ScrollView> pullToRefreshBase) {
                 pageIndex++;
                 operType=2;
                 myurl="http://365jia.cn/news/api3/365jia/news/headline?page="+pageIndex;
                 //清空handler
                 mhandler.removeCallbacksAndMessages(null);
                 requestData();
            }
        });
        ILoadingLayout startLabels = plv.getLoadingLayoutProxy(true, false);
        startLabels.setPullLabel("下拉刷新一下");
        startLabels.setRefreshingLabel("正在玩命加载...");
        startLabels.setReleaseLabel("放开我就刷新");


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

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值