Viewpager+XListView+Internet

来源:互联网 发布:成都家电维修软件 编辑:程序博客网 时间:2024/06/06 02:35
package com.example.android_mobileinternet_test1;import android.app.ProgressDialog;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;import android.graphics.Bitmap;import android.media.Image;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.os.AsyncTask;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.provider.Settings;import android.support.annotation.Nullable;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.RelativeLayout;import android.widget.Toast;import com.example.android_mobileinternet_test1.bean.MenuInFo;import com.example.android_mobileinternet_test1.utils.ImageLoaderAsyncTask;import com.example.android_mobileinternet_test1.utils.NetWorkUtils;import com.example.android_mobileinternet_test1.utils.StreamTools;import com.google.gson.Gson;import com.limxing.xlistview.view.XListView;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLEncoder;import java.util.ArrayList;import java.util.List;/** * Created by 范晋炜 on 2017/7/26 0026. * com.example.android_mobileinternet_test1 * SecondActivity */public class SecondActivity extends AppCompatActivity implements XListView.IXListViewListener {    private ViewPager viewPager;    private List<String> imageAddress = new ArrayList<>();    private int index = 0;    private int indexs = 1;    private boolean flag;    private static final int TYPE_0 = 0;    private static final int TYPE_1 = 1;    private MyBaseAdapter adapter;    private ProgressDialog dialog;    private Handler handler = new Handler(){        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            switch (msg.what){                case 1:                {                    viewPager.setCurrentItem(index);                }                break;            }        }    };    private XListView xLV;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.second);        viewPager = (ViewPager) findViewById(R.id.sec_pager);        xLV = (XListView) findViewById(R.id.sec_XList);        imageAddress.add("http://www.taoqao.com/uploads/allimg/140425/1-140425212357.jpg");        imageAddress.add("http://www.taoqao.com/uploads/allimg/140425/1-140425212400.jpg");        imageAddress.add("http://www.taoqao.com/uploads/allimg/140425/1-140425212403.jpg");        imageAddress.add("http://www.taoqao.com/uploads/allimg/140425/1-140425212522.jpg");        imageAddress.add("http://www.taoqao.com/uploads/allimg/140425/1-140425212525.jpg");        viewPager.setAdapter(new MyPagerAdapter());        autoPlay();        xLV.setPullLoadEnable(true);        xLV.setXListViewListener(this);        //判断网络设置  如果有网络加载数据  如果未连接网络弹出对话框        if(NetWorkUtils.isConnection(this)){            getData("http://apis.juhe.cn/cook/query.php",indexs+"",10+"");        }else{            showNetWorkSettingDialog();        }    }    @Override    public void onRefresh() {        ++indexs;        getData("http://apis.juhe.cn/cook/query.php",indexs+"",10+"");        flag = true;        xLV.stopRefresh(true);    }    @Override    public void onLoadMore() {        ++indexs;        getData("http://apis.juhe.cn/cook/query.php",indexs+"",10+"");        flag = false;        xLV.stopLoadMore();    }    private void getData(final String path, String pn, String rn){        new AsyncTask<String, Void, String>() {            @Override            protected void onPreExecute() {                super.onPreExecute();                getDialog();            }            @Override            protected void onPostExecute(String s) {                super.onPostExecute(s);                if(s == null)                    return;                Gson gson = new Gson();                MenuInFo menuInFo = gson.fromJson(s, MenuInFo.class);                List<MenuInFo.ResultBean.DataBean.StepsBean> results = menuInFo.getResult().getData().get(0).getSteps();                //适配数据                if(adapter == null){                    adapter = new MyBaseAdapter(results);                    xLV.setAdapter(adapter);                }else{                    adapter.loadMore(results,flag);                    adapter.notifyDataSetChanged();                }                dialog.dismiss();            }            @Override            protected String doInBackground(String... params) {                try {                    String path = params[0];                    String pn = params[1];                    String rn = params[2];                    URL url = new URL(path);                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();                    connection.setRequestMethod("POST");                    connection.setConnectTimeout(5000);                    connection.setReadTimeout(5000);                    OutputStream os = connection.getOutputStream();                    os.write(("key=a71e47bbe5a7e7a2ecf068ca9a756032&menu=" +                            URLEncoder.encode("地三鲜","utf-8") + "&pn=" + pn + "&rn=" + rn).getBytes());                    os.flush();                    int code = connection.getResponseCode();                    if(code == HttpURLConnection.HTTP_OK){                        InputStream is = connection.getInputStream();                        String json = StreamTools.readFromNetWork(is);                        return json;                    }                } catch (IOException e) {                    e.printStackTrace();                }                return null;            }        }.execute(path,pn,rn);    }    class MyBaseAdapter extends BaseAdapter{        private List<MenuInFo.ResultBean.DataBean.StepsBean> results;        public MyBaseAdapter(List<MenuInFo.ResultBean.DataBean.StepsBean> results) {            this.results = results;        }        public void loadMore(List<MenuInFo.ResultBean.DataBean.StepsBean> data,boolean flag){            for (MenuInFo.ResultBean.DataBean.StepsBean bean:data) {                if(flag){                    results.add(0,bean);                }else{                    results.add(bean);                }            }        }        @Override        public int getCount() {            return results != null ? results.size() : 0;        }        @Override        public Object getItem(int position) {            return results.get(position);        }        @Override        public long getItemId(int position) {            return position;        }        @Override        public int getItemViewType(int position) {            if(position % 2 == 0){                return TYPE_0;            }else{                return TYPE_1;            }        }        @Override        public int getViewTypeCount() {            return 2;        }        @Override        public View getView(int position, View convertView, ViewGroup parent) {            int type = getItemViewType(position);            ViewHolder holder = null;            ViewHolder2 holder2 = null;            switch (type){                case 0:                {                    if(convertView == null){                        convertView = convertView.inflate(SecondActivity.this, R.layout.item1,null);                        holder = new ViewHolder();                        holder.item1_img1 = (ImageView) convertView.findViewById(R.id.item1_img1);                        holder.item1_img2 = (ImageView) convertView.findViewById(R.id.item1_img2);                        holder.item1_img3 = (ImageView) convertView.findViewById(R.id.item1_img3);                        convertView.setTag(holder);                    }else{                        holder = (ViewHolder) convertView.getTag();                    }                }                break;                case 1:                {                    if(convertView == null){                       convertView = convertView.inflate(SecondActivity.this,R.layout.item2,null);                       holder2 = new ViewHolder2();                       holder2.item2_img = (ImageView) convertView.findViewById(R.id.item2_img);                        convertView.setTag(holder2);                    }else{                        holder2 = (ViewHolder2) convertView.getTag();                    }                }                break;            }            switch (type){                case 0:                {                    getImage(results.get(position).getImg(),holder.item1_img1);                    getImage(results.get(position).getImg(),holder.item1_img2);                    getImage(results.get(position).getImg(),holder.item1_img3);                }                break;                case 1:                {                    getImage(results.get(position).getImg(),holder2.item2_img);                }                break;            }            return convertView;        }        class ViewHolder{            ImageView item1_img1,item1_img2,item1_img3;        }        class ViewHolder2{            ImageView item2_img;        }    }    private void getImage(String path,ImageView imageView){        //自定义配置                DisplayImageOptions options = new DisplayImageOptions.Builder()                        .cacheInMemory(true)//让图片进行内存缓存                        .cacheOnDisk(true)//让图片进行sdcard缓存                        .showImageForEmptyUri(R.mipmap.a)//图片地址有误                        .showImageOnFail(R.mipmap.b)//当图片加载出现错误的时候显示的图片                        .showImageOnLoading(R.mipmap.c)//图片正在加载的时候显示的图片                        .build();                //ImageLoader.getInstance().loadImage(path,options,new Ima);//加载图片                //参数1:加载的图片地址                //参数2:将图片设置到那个图片控件上面                //参数3:加载图片配置选项,意思是指明对这张图片的是否进行缓存(内存、sdcard)                ImageLoader.getInstance().displayImage(path, imageView, options);    }    class MyPagerAdapter extends PagerAdapter{        @Override        public int getCount() {            return Integer.MAX_VALUE;        }        @Override        public boolean isViewFromObject(View view, Object object) {            return view == object;        }        @Override        public Object instantiateItem(ViewGroup container, int position) {            final ImageView imageView = new ImageView(SecondActivity.this);            new ImageLoaderAsyncTask(new ImageLoaderAsyncTask.ImageClallBackListener() {                @Override                public void imageCallBack(Bitmap bitmap) {                    if(bitmap != null){                        imageView.setImageBitmap(bitmap);                    }else{                        imageView.setImageResource(R.mipmap.ic_launcher_round);                    }                }            }).execute(imageAddress.get(position % imageAddress.size()));            container.addView(imageView);            return imageView;        }        @Override        public void destroyItem(ViewGroup container, int position, Object object) {            container.removeView((View) object);        }    }    private void autoPlay(){        new Thread(){            @Override            public void run() {                super.run();                while (true){                    index++;                    int index1 = index % imageAddress.size();                    try {                        Thread.sleep(3000);                    } catch (InterruptedException e) {                        e.printStackTrace();                    }                    handler.sendEmptyMessage(1);                }            }        }.start();    }    //获取dialog的方法    private void getDialog(){        dialog = new ProgressDialog(this);        dialog.setMessage("正在玩儿命加载数据");        dialog.show();    }    private void showNetWorkSettingDialog(){        AlertDialog.Builder builder = new AlertDialog.Builder(SecondActivity.this);        builder.setMessage("没有设置网络,请您设置网络!");        builder.setNegativeButton("取消",null);        builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {                Intent intent = new Intent();                intent.setAction("android.settings.WIRELESS_SETTINGS");                startActivity(intent);            }        });        builder.create().show();    }}
原创粉丝点击