无线轮播+GET网络请求数据+xlistview+多条目加载

来源:互联网 发布:为什么酷狗显示没网络 编辑:程序博客网 时间:2024/06/05 11:02
package zhaoshengjie20170724.zhoukao3;import android.os.AsyncTask;import android.os.Handler;import android.os.Message;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.RadioButton;import android.widget.RadioGroup;import android.widget.TextView;import com.google.gson.Gson;import com.limxing.xlistview.view.XListView;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;import java.io.InputStream;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.ArrayList;import java.util.List;import zhaoshengjie20170724.zhoukao3.bean.FoodInfo;import zhaoshengjie20170724.zhoukao3.utils.StreamTools;public class MainActivity extends AppCompatActivity implements XListView.IXListViewListener {    private List<String> imageAddress = new ArrayList<>();    private XListView xlistview;    private RadioGroup radioGroup;    private ViewPager viewPager;    private int index = 0;    private int index1 = 1;    private boolean flag;    private Handler handle = new Handler() {        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            switch (msg.what) {                case 1:                    viewPager.setCurrentItem(index);                    break;            }        }    };    private MyBaseAdapter adapter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //添加图片地址        imageAddress.add("http://img02.sogoucdn.com/app/a/100520093/41425947a62770c7-12a758363cb1c808-9988c098cd3d5ebd43e73e2b2b46ef3b.jpg");        imageAddress.add("http://syimg.focus.cn/upload/photos/280477/IPO8hWiJ.jpg");        imageAddress.add("http://mvimg1.meitudata.com/5624edc8cb04c63.jpg");        imageAddress.add("http://cdn.duitang.com/uploads/item/201406/27/20140627085544_cHFnx.jpeg");        initview();        xlistview.setPullLoadEnable(true);        xlistview.setXListViewListener(this);        viewPager.setAdapter(new MypagerAdapter());        autoplay();        //imageloader简单配置        ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this).build();        ImageLoader.getInstance().init(configuration);        //从网络获取数据        getData("http://apis.juhe.cn/cook/query.php?key=0348a7bbfb2b2175e7bfd45ef47a5324&menu=红烧肉");        //viewpager监听        viewPager.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 < imageAddress.size(); i++) {                    RadioButton radiobutton = (RadioButton) radioGroup.getChildAt(i);                    if (i == (position % imageAddress.size())) {                        radiobutton.setChecked(true);                    } else {                        radiobutton.setChecked(false);                    }                }            }            @Override            public void onPageScrollStateChanged(int state) {            }        });    }    /*    * 异步请求网络数据    * */    private void getData(final String path) {        new AsyncTask<String, Void, String>() {            @Override            protected void onPostExecute(String s) {                super.onPostExecute(s);                if (s != null) {                    Gson gson = new Gson();                    FoodInfo foodInfo = gson.fromJson(s, FoodInfo.class);                    List<FoodInfo.ResultBean.DataBean.StepsBean> list = foodInfo.getResult().getData().get(0).getSteps();                    if (adapter == null) {                        adapter = new MyBaseAdapter(list);                        xlistview.setAdapter(adapter);                    } else {                        adapter.loadmore(list, flag);                        adapter.notifyDataSetChanged();                    }                }            }            @Override            protected String doInBackground(String... params) {                try {                    String path = params[0];                    URL url = new URL(path);                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();                    connection.setRequestMethod("GET");                    connection.setConnectTimeout(5000);                    connection.setReadTimeout(5000);//                    OutputStream os = connection.getOutputStream();//                    os.write(("key=0348a7bbfb2b2175e7bfd45ef47a5324&menu=红烧肉" ).getBytes());//                    os.flush();                    if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {                        InputStream is = connection.getInputStream();                        return StreamTools.readFile(is);                    }                } catch (Exception e) {                    e.printStackTrace();                }                return null;            }        }.execute(path);    }    private void autoplay() {        new Thread() {            @Override            public void run() {                super.run();                while (true) {                    try {                        sleep(2000);                    } catch (Exception e) {                        e.printStackTrace();                    }                    index++;                    handle.sendEmptyMessage(1);                }            }        }.start();    }    //xlistview上拉下拉加载数据    @Override    public void onRefresh() {        ++index;        getData("http://apis.juhe.cn/cook/query.php?key=0348a7bbfb2b2175e7bfd45ef47a5324&menu=红烧肉");        flag = true;        xlistview.stopRefresh(true);    }    @Override    public void onLoadMore() {        ++index;        getData("http://apis.juhe.cn/cook/query.php?key=0348a7bbfb2b2175e7bfd45ef47a5324&menu=红烧肉");        flag = false;        xlistview.stopLoadMore();    }    class MyBaseAdapter extends BaseAdapter {        private List<FoodInfo.ResultBean.DataBean.StepsBean> list ;        private final DisplayImageOptions options;        public MyBaseAdapter(List<FoodInfo.ResultBean.DataBean.StepsBean> list ) {            this.list = list;            options = new DisplayImageOptions.Builder().cacheOnDisk(true).cacheInMemory(true).showImageOnLoading(R.mipmap.ic_launcher).build();        }        public void loadmore(List<FoodInfo.ResultBean.DataBean.StepsBean> lists, boolean flag) {            for (FoodInfo.ResultBean.DataBean.StepsBean bean : lists) {                if (flag) {                    list.add(0, bean);                } else {                    list.add(bean);                }            }        }        @Override        public int getCount() {            return list != null ? list.size() : 0;        }        @Override        public Object getItem(int position) {            return list.get(position);        }        @Override        public long getItemId(int position) {            return position;        }        @Override        public int getItemViewType(int position) {            if (position % 2 == 0) {                return 0;            } else {                return 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(MainActivity.this, R.layout.item1, null);                        holder = new ViewHolder();                        holder.img = (ImageView) convertView.findViewById(R.id.img);                        holder.txt = (TextView) convertView.findViewById(R.id.txt);//                        convertView.setTag(holder);                    } else {                        holder = (ViewHolder) convertView.getTag();                    }                }                break;                case 1: {                    if (convertView == null) {                        convertView = convertView.inflate(MainActivity.this, R.layout.item2, null);                        holder2 = new ViewHolder2();                        holder2.img = (ImageView) convertView.findViewById(R.id.img2);                        holder2.txt = (TextView) convertView.findViewById(R.id.txt2);//                        ImageLoader.getInstance().displayImage("http://syimg.focus.cn/upload/photos/280477/IPO8hWiJ.jpg",img,options);                        convertView.setTag(holder2);                    } else {                        holder2 = (ViewHolder2) convertView.getTag();                    }                }                break;            }            switch (type) {                case 0: {                    ImageLoader.getInstance().displayImage(list.get(position).getImg(),holder.img,options);                    holder.txt.setText(list.get(position).getStep());                }                break;                case 1: {                    ImageLoader.getInstance().displayImage(list.get(position).getImg(),holder2.img,options);                    holder2.txt.setText(list.get(position).getStep());                }                break;            }            return convertView;        }        class ViewHolder {            ImageView img;            TextView txt;        }        class ViewHolder2 {            ImageView img;            TextView txt;        }    }    //初始化控件    private void initview() {        xlistview = (XListView) findViewById(R.id.xlistview);        radioGroup = (RadioGroup) findViewById(R.id.radiogroup);        viewPager = (ViewPager) findViewById(R.id.viewpager);    }    //viewpager适配器    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 void destroyItem(ViewGroup container, int position, Object object) {            container.removeView((View) object);        }        @Override        public Object instantiateItem(ViewGroup container, int position) {            ImageView imageView = new ImageView(MainActivity.this);            DisplayImageOptions options = new DisplayImageOptions.Builder()                    .cacheOnDisk(true)                    .cacheInMemory(true)                    .showImageOnLoading(R.mipmap.ic_launcher)                    .build();            ImageLoader.getInstance().displayImage(imageAddress.get(position % imageAddress.size()), imageView, options);            container.addView(imageView);            return imageView;        }    }}
阅读全文
1 0
原创粉丝点击