PullToRefresh添加轮播图为头布局

package lidabenshi.bwie.com.lun_dian;

import android.media.Image;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;

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

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {
    private Adapter adapter;
    private PullToRefreshListView pull;
    private String url = "https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=10";
    private ArrayList list_bean = new ArrayList<>();
    private LinearLayout ll_out;
    private ArrayList img_list = new ArrayList<>();
    private ArrayList iv_list = new ArrayList<>();
    private ViewPager vp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //找到控件
        pull = (PullToRefreshListView) findViewById(R.id.pull);
        adapter=new Adapter(MainActivity.this, list_bean);
        pull.setAdapter(adapter);
        initView();
        initHead();
    }
    Handler hand = new Handler()
    {


        @Override
        public void handleMessage(Message msg) {
            if(msg.what==1)
            {
                String count = (String) msg.obj;
                try {
                    JSONObject jsonObject = new JSONObject(count);
                    JSONArray newslist = jsonObject.optJSONArray("newslist");
                    for (int i = 0; i < newslist.length(); i++) {
                        JSONObject jsonObject1 = newslist.optJSONObject(i);
                        String description = jsonObject1.optString("description");
                        String title = jsonObject1.optString("title");
                        String picUrl = jsonObject1.optString("picUrl");
                        list_bean.add(new Bean(description,title,picUrl));
                    }
                    //将下拉和上拉的条目隐藏
                    adapter.notifyDataSetChanged();
                    pull.onRefreshComplete();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                //设置适配器就不多说了,,很容易



                //让他支持上拉加载
                pull.setMode(PullToRefreshBase.Mode.BOTH);
                //设置刷新的方法
                pull.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2() {
                    //下拉刷新
                    @Override
                    public void onPullDownToRefresh(PullToRefreshBase refreshView) {
                        //让存储的集合清空,重新请求数据添加进集合
                        list_bean.clear();
                        //在调用一次查找数据的方法
                        initView();
                    }
                    //上拉加载
                    @Override
                    public void onPullUpToRefresh(PullToRefreshBase refreshView) {
                        //调用查找方法,自动拼接到集合中
                        initView();
                        adapter.notifyDataSetChanged();
                    }
                });


            }
            else
           if(msg.what==2)
           {
               //获取当前视图
               int currentItem = vp.getCurrentItem();
               //每次加一
               currentItem++;
               //在设置成当前视图
               vp.setCurrentItem(currentItem);
               //让他自己对着自己发送消息,实现无线轮播(pageAdapter中的返回的是Integer的最大值)
               hand.sendEmptyMessageDelayed(2,2000);
           }
        }

    };

    public void initHead()
    {
        Log.e("==========",img_list.size()+"");
        img_list.clear();

        //找到轮播图的布局
        View view_vp = View.inflate(MainActivity.this, R.layout.img_page, null);
        vp = (ViewPager) view_vp.findViewById(R.id.vp);
        //为了在轮播图中加指示点
        ll_out = (LinearLayout)view_vp.findViewById(R.id.ll_out);
        //在自定义的集合中添加假数据
        img_list.add(R.drawable.a);
        img_list.add(R.drawable.b);
        img_list.add(R.drawable.c);
        img_list.add(R.drawable.d);
        img_list.add(R.drawable.e);
        img_list.add(R.drawable.f);
        //给viewpager设置适配器

        vp.setAdapter(new page_Adapter(MainActivity.this,img_list));
        //给PullToRefreshListView设置头布局
        ListView refreshableView = pull.getRefreshableView();
        refreshableView.addHeaderView(view_vp);
        //通过handler发送一条消息,让图片轮播
        hand.sendEmptyMessageDelayed(2,1000);
        //调用添加点的方法
        initdian();
        //给viewpager设置页面滑动监听
        vp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                //循环遍历存点的集合
                for (int i = 0; i < iv_list.size(); i++) {
                    if(i==position%iv_list.size())
                    {
                        iv_list.get(i).setImageResource(R.drawable.dot_focuable);
                    }else
                    {
                        iv_list.get(i).setImageResource(R.drawable.dot_normal);
                    }
                }
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
    }
    //动态添加点的方法
    private void initdian() {
        //根据图片的集合数量实例化图片控件
        for (int i = 0; i < img_list.size(); i++) {
            ImageView imageView = new ImageView(MainActivity.this);
            //如果是第一个点,默认第一次将他设置成红色
            if(i==0)
            {
                imageView.setImageResource(R.drawable.dot_focuable);
            }else
            {
                imageView.setImageResource(R.drawable.dot_normal);
            }
            //点与点之间的控件长度
            LinearLayout.LayoutParams parmes = new LinearLayout.LayoutParams(20, 20);
            parmes.setMargins(10,0,10,0);
            //添加进控件
            ll_out.addView(imageView,parmes);
            //创建存放图片控件的集合
            iv_list.add(imageView);
        }
    }

    //通过线程解析地址
    public void initView()
    {
        new Thread()
        {
            @Override
            public void run() {
                try {
                    URL ur = new URL(url);
                    URLConnection urlConnection = ur.openConnection();
                    InputStream inputStream = urlConnection.getInputStream();
                    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                    String read = "";
                    StringBuilder stringBuilder = new StringBuilder();
                    while((read=bufferedReader.readLine())!=null)
                    {
                        stringBuilder.append(read);
                    }
                    Message message = new Message();
                    message.obj = stringBuilder.toString();
                    message.what = 1;
                    hand.sendMessage(message);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }.start();
    }
}
 
  
//这是轮播图的适配器
 
  
package lidabenshi.bwie.com.lun_dian;

import android.content.Context;
import android.graphics.pdf.PdfDocument;
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import java.util.ArrayList;

/**
 * Created by 李大本事 on 2017/9/20.
 */

public class page_Adapter extends PagerAdapter{
    private Context con;
    private ArrayList list;
    private ImageView iv_page;

    public page_Adapter(Context con, ArrayList list) {
        this.con = con;
        this.list = list;
    }
    //给他图片的总数为integer的最大值,21亿多
    @Override
    public int getCount() {
        return Integer.MAX_VALUE;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view==object;
    }
    //返回一个viewpager展示的视图
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        //自定义的viewpager的展示的视图
        View inflate = View.inflate(con, R.layout.vp_page, null);
        iv_page = (ImageView)inflate.findViewById(R.id.iv_page);
        //让图片的数量永远都不会超过自己集合的长度
        iv_page.setImageResource(list.get(position%list.size()));
        container.addView(inflate);
        return inflate;
    }
    //销毁的方法
    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }
}
 
  
 
 

你可能感兴趣的:(PullToRefresh添加轮播图为头布局)