xlistview+Headview(viewpager自动带点轮播)+缓存

1.MainActyty


  private XListView xlv;
    String path="http://www.meirixue.com/api.php?c=index&a=index";
    private MyAdapter myAdapter;

    private String s;
    private ViewPager vip;
    private Adapter adapter;
    private List<Bean.DataBean.AdlistBean> adlist;
    private LinearLayout ll;
    private List<ImageView> ilist;

    private Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            myAdapter.notifyDataSetChanged();

            xlv.stopRefresh();
            xlv.stopLoadMore();

            int a=msg.what;
            switch (a){
                case 1:
                    int currentItem = vip.getCurrentItem();
                    currentItem++;
                    vip.setCurrentItem(currentItem);
                    break;
            }
        }
    };
    private ImageView iv;
    private SharedPreferences sp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        xlv = (XListView) findViewById(R.id.xlv);

//    SharedPreferences来进行缓存图片
        sp = getSharedPreferences("u", MODE_PRIVATE);

//        判断
       if(sp.getString("s",null)==null){

            indate();

        }else{

            String s = sp.getString("s", null);

           Gson gson = new Gson();
           Bean bean = gson.fromJson(s, Bean.class);
           adlist = bean.getData().getAdlist();
           myAdapter = new MyAdapter();
           xlv.setAdapter(myAdapter);



          // indate();
        }

       // indate();

        xlv.setPullRefreshEnable(true);
        xlv.setPullLoadEnable(true);
        xlv.setXListViewListener(this);

    }

    @Override
    public void onRefresh() {

        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                adlist.add(0,adlist.get(3));
            }
        },2000);


        handler.sendEmptyMessage(0);
    }

    @Override
    public void onLoadMore() {

        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                adlist.add(adlist.get(3));
            }
        },2000);

        handler.sendEmptyMessage(0);

    }

//    异步加载请求数据
    private void indate() {

        new AsyncTask<String,Void,String>(){

            private ByteArrayOutputStream outputStream;

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

                try {
                    URL url = new URL(params[0]);
                    HttpURLConnection connetion= (HttpURLConnection) url.openConnection();
                    connetion.setRequestMethod("GET");
                    connetion.setConnectTimeout(2000);
                    int responseCode = connetion.getResponseCode();

                    if(responseCode==200){
                        InputStream inputStream = connetion.getInputStream();

                        outputStream = new ByteArrayOutputStream();
                        int len;
                        byte[] by=new byte[1024];

                        while ((len=inputStream.read(by))!=-1){
                            outputStream.write(by,0,len);
                        }

                        s = outputStream.toString();

//                        添加
                        sp.edit().putString("s",s).commit();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }

                return s;
            }

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

                Gson gson = new Gson();
                Bean bean = gson.fromJson(s, Bean.class);
                adlist = bean.getData().getAdlist();
                myAdapter = new MyAdapter();

//                头布局
                LayoutInflater inflater=LayoutInflater.from(MainActivity.this);
                View view = inflater.inflate(R.layout.viewpager, null);

                vip = (ViewPager) view.findViewById(R.id.vip);
                ll = (LinearLayout) view.findViewById(R.id.ll);
                adapter = new Adapter();
                vip.setCurrentItem(100000);
//无限轮播
                Timer timer = new Timer();
                timer.schedule(new TimerTask() {
                    @Override
                    public void run() {
                        handler.sendEmptyMessage(1);
                    }
                },2000,2000);

//                加点
                dian();
                pager();
                vip.setAdapter(adapter);
//         添加头
                xlv.addHeaderView(view);

//                xlistview 适配器关联
                xlv.setAdapter(myAdapter);


            }

        }.execute(path);
    }
//    点的监听
    private void pager() {

        vip.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {

                for(int i=0;i<ilist.size();i++){
                    if(position%adlist.size()==i){
                        ilist.get(position%adlist.size()).setImageResource(R.drawable.dot_focuable);
                    }
                    else{
                        ilist.get(i).setImageResource(R.drawable.dot_normal);
                    }
                }
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
    }
  //  点的方法
    private void dian() {
        ilist=new ArrayList<>();
        if(ilist!=null){
            ilist.clear();
        }

        for(int i=0;i<adlist.size();i++){
            iv = new ImageView(MainActivity.this);
            if(i==0){
                iv.setImageResource(R.drawable.dot_focuable);
            }
            else{
                iv.setImageResource(R.drawable.dot_normal);
            }

            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(20, 20);

            params.setMargins(10,0,10,0);

            ll.addView(iv,params);

            ilist.add(iv);
        }
    }

    //xlistview适配器
    class MyAdapter extends BaseAdapter{

        @Override
        public int getCount() {
            return adlist.size();
        }

        @Override
        public Object getItem(int position) {
            return null;
        }

        @Override
        public long getItemId(int position) {
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            convertView=View.inflate(MainActivity.this,R.layout.item,null);

            ImageView iv= (ImageView) convertView.findViewById(R.id.iv);
            TextView tv= (TextView) convertView.findViewById(R.id.tv);

            //图片缓存
            DisplayImageOptions options=new DisplayImageOptions.Builder()
                    .cacheOnDisk(true)
                    .cacheInMemory(true)
                    .build();

            ImageLoader.getInstance().displayImage(adlist.get(position).getImg(),iv,options);

            tv.setText(adlist.get(position).getTitle());
            return convertView;
        }
    }

    viewpager适配器
    class Adapter extends PagerAdapter{

        @Override
        public int getCount() {
            return Integer.MAX_VALUE;
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view==object;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {

            container.removeView((View)object);
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {

            ImageView im=new ImageView(MainActivity.this);

           /* DisplayImageOptions options=new DisplayImageOptions.Builder()
                    .cacheOnDisk(true)
                    .cacheInMemory(true)
                    .build();*/
            ImageLoader.getInstance().displayImage(adlist.get(position%adlist.size()).getImg(),im);

            container.addView(im);
            return im;
        }
    }

}
 
 
 
2.main.xml
<com.bawei.utils.XListView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/xlv"></com.bawei.utils.XListView>
3.viewpager.xml
<android.support.v4.view.ViewPager
    android:id="@+id/vip"
    android:layout_width="match_parent"
    android:layout_height="200dp"></android.support.v4.view.ViewPager>

<LinearLayout
    android:id="@+id/ll"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:orientation="horizontal"
    ></LinearLayout>
4.item.xml
<ImageView
    android:id="@+id/iv"
    android:layout_width="100dp"
    android:layout_height="100dp" />
<TextView
    android:id="@+id/tv"
    android:layout_marginLeft="20dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="20sp"/>
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值