二级列表数据从网络请求数据

来源:互联网 发布:我的购物车淘宝网登录 编辑:程序博客网 时间:2024/05/22 13:29
 
Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            if (msg.what == 1) {                /*if (index == strings.size()) {                    index = 0;                    viewpager.setCurrentItem(index, false);                } else {*/                    viewpager.setCurrentItem(index);//                }            }        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        listview = (ExpandableListView) findViewById(R.id.listview);        name = (EditText) findViewById(R.id.name);        viewpager = (ViewPager) findViewById(R.id.viewpager);//        rg = (RadioGroup) findViewById(R.id.group);        rg = (LinearLayout) findViewById(R.id.group);        strings = new ArrayList<String>();        strings.add("http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/t/1/115_465855.jpg");        strings.add("http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/t/1/345_384256.jpg");        strings.add("http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/t/1/424_621847.jpg");        strings.add("http://juheimg.oss-cn-hangzhou.aliyuncs.com/cookbook/t/1/575_686746.jpg");//        增加圆点        addRadioButton();//        设置ViewPager一次性加载几张图片        viewpager.setOffscreenPageLimit(strings.size());        viewpager.setAdapter(new GetAdapter());        //        滑动和点击事件        Lisetenear();        //        无限轮播        wuXian();    }    //    增加圆点    private void addRadioButton() {        for (int i = 0; i < strings.size(); i++) {            View button = new View(MainActivity.this);            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(40, 40);            params.leftMargin = 10;            params.rightMargin = 10;            button.setLayoutParams(params);            if (i == 0) {                button.setBackgroundResource(R.drawable.shape);            } else {                button.setBackgroundResource(R.drawable.shape1);            }            rg.addView(button);        }    }//    无限轮播    private void wuXian() {        new Timer().schedule(new TimerTask() {            @Override            public void run() {                index++;                /*Message msg = Message.obtain();                msg.what = 1;                msg.obj = index;                handler.sendMessage(msg);*/                handler.sendEmptyMessage(1);            }        }, 1000, 1000);    }//    滑动和点击按钮事件    private void Lisetenear() {        viewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {            @Override            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {                for (int i = 0; i < strings.size(); i++) {                    View button = (View) rg.getChildAt(i);                    if (i == (position %strings.size())) {                        button.setBackgroundResource(R.drawable.shape);                    } else {                        button.setBackgroundResource(R.drawable.shape1);                    }                }            }            @Override            public void onPageSelected(int position) {            }            @Override            public void onPageScrollStateChanged(int state) {            }        });       /* rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {            @Override            public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) {                for (int i = 0; i < strings.size(); i++) {                    RadioButton button = (RadioButton) rg.getChildAt(i);                    if (button.isChecked())                        viewpager.setCurrentItem(i);                }            }        });*/       rg.setOnClickListener(new View.OnClickListener() {           @Override           public void onClick(View v) {               for (int i = 0; i < strings.size(); i++) {                   View button = (View) rg.getChildAt(i);                   final int finalI = i;                   button.setOnClickListener(new View.OnClickListener() {                       @Override                       public void onClick(View v) {                           viewpager.setCurrentItem(finalI);                       }                   });               }           }       });    }//    搜索按钮的点击事件    public void btnSelect(View view) {        new AsyncTaskUtils(new AsyncTaskUtils.SelectResout() {            @Override            public void OnclickResout(String string) {                if (string != null) {                    Gson gson = new Gson();                    MenuINfo json = gson.fromJson(string, MenuINfo.class);                    list = json.getResult().getData();//                    二维数组增加数据//                    init();//                    两种方法//                    第一种不使用二维数组,直接使用List来得到数据                    listview.setAdapter(new ExListViewAdapter(MainActivity.this,list));//                    第二种就是使用了二维数组//                    listview.setAdapter(new ListViewAdapter());                }            }        }).execute("http://apis.juhe.cn/cook/query.php?key=26ef57b6568ddb188773d1c683879566&menu=" + name                .getText().toString().trim());    }    // 给二级列表增加数据    private void init() {        groups = new String[list.size()];        for (int i = 0; i < list.size(); i++) {            groups[i] = name.getText().toString() + "第" + (i + 1) + "种";            steps = list.get(i).getSteps();        }        groupsImg = new Bitmap[list.size()];        for (int i = 0; i < list.size(); i++) {            System.out.println("一级请求地址=========" + list.get(i).getAlbums().get(0));            final int finalI = i;            new AsyncTask_Image(new AsyncTask_Image.setImagetListener() {                @Override                public void ImageOnclick(Bitmap bitmap) {                    groupsImg[finalI] = bitmap;                }            }).execute(list.get(i).getAlbums().get(0));        }        child = new String[list.size()][steps.size()];        for (int i = 0; i < list.size(); i++) {            for (int j = 0; j < steps.size(); j++) {                System.out.println("子列表的内容" + steps.get(j).getStep());                child[i][j] = steps.get(j).getStep();            }        }        childImg = new Bitmap[list.size()][steps.size()];        for (int i = 0; i < list.size(); i++) {            for (int j = 0; j < steps.size(); j++) {                System.out.println("子列表的图片地址" + steps.get(j).getImg());                final int I = i;                final int J = j;                new AsyncTask_Image(new AsyncTask_Image.setImagetListener() {                    @Override                    public void ImageOnclick(Bitmap bitmap) {                        childImg[I][J] = bitmap;                    }                }).execute(steps.get(j).getImg());            }        }    }    class GetAdapter 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(MainActivity.this);            new AsyncTask_Image(new AsyncTask_Image.setImagetListener() {                @Override                public void ImageOnclick(Bitmap bitmap) {                    if (bitmap != null)                        imageView.setImageBitmap(bitmap);                    else                        imageView.setImageResource(R.mipmap.ic_launcher);                }            }).execute(strings.get(position % strings.size()));            container.addView(imageView);            return imageView;        }        @Override        public void destroyItem(ViewGroup container, int position, Object object) {            container.removeView((View) object);        }    }    class ListViewAdapter extends BaseExpandableListAdapter {        @Override        public int getGroupCount() {            return groups.length;        }        @Override        public int getChildrenCount(int groupPosition) {            return child[groupPosition].length;        }        @Override        public Object getGroup(int groupPosition) {            return groups[groupPosition];        }        @Override        public Object getChild(int groupPosition, int childPosition) {            return child[childPosition];        }        @Override        public long getGroupId(int groupPosition) {            return groupPosition;        }        @Override        public long getChildId(int groupPosition, int childPosition) {            return childPosition;        }        @Override        public boolean hasStableIds() {            return false;        }        @Override        public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {            if (convertView == null) {                convertView = View.inflate(MainActivity.this, R.layout.group_item, null);            }            ImageView img = (ImageView) convertView.findViewById(R.id.img);            TextView tv = (TextView) convertView.findViewById(R.id.textview);            img.setImageBitmap(groupsImg[groupPosition]);            tv.setText(groups[groupPosition]);            return convertView;        }        @Override        public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View                convertView, ViewGroup parent) {            if (convertView == null) {                convertView = View.inflate(MainActivity.this, R.layout.child_item, null);            }            ImageView img = (ImageView) convertView.findViewById(R.id.img);            TextView tv = (TextView) convertView.findViewById(R.id.textview);            img.setImageBitmap(childImg[groupPosition][childPosition]);            tv.setText(child[groupPosition][childPosition]);            return convertView;        }        @Override        public boolean isChildSelectable(int groupPosition, int childPosition) {            return false;        }    }

}

//自定义适配器

public class ExListViewAdapter extends BaseExpandableListAdapter {    private Context context;    private List<MenuINfo.ResultBean.DataBean> list;    public ExListViewAdapter(Context context,
 List<MenuINfo.ResultBean.DataBean> list) {        this.context = context;        this.list = list;    }    @Override    public int getGroupCount() {        return list.size();    }    @Override    public int getChildrenCount(int groupPosition) {        return list.get(groupPosition).getSteps().size();    }    @Override    public Object getGroup(int groupPosition) {        return list.get(groupPosition).getAlbums().get(0);    }    @Override    public Object getChild(int groupPosition, int childPosition) {        return list.get(groupPosition).getSteps().get(childPosition);    }    @Override    public long getGroupId(int groupPosition) {        return groupPosition;    }    @Override    public long getChildId(int groupPosition, int childPosition) {        return childPosition;    }    @Override    public boolean hasStableIds() {        return false;    }    @Override    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {        if (convertView == null) {            convertView = View.inflate(context, R.layout.group_item, null);        }        final ImageView img = (ImageView) convertView.findViewById(R.id.img);        TextView tv = (TextView) convertView.findViewById(R.id.textview);        tv.setText(list.get(groupPosition).getTitle());        new AsyncTask_Image(new AsyncTask_Image.setImagetListener() {            @Override            public void ImageOnclick(Bitmap bitmap) {                img.setImageBitmap(bitmap);            }        }).execute(list.get(groupPosition).getAlbums().get(0));        return convertView;    }    @Override    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView,                             ViewGroup parent) {        if (convertView == null) {            convertView = View.inflate(context, R.layout.child_item, null);        }        final ImageView img = (ImageView) convertView.findViewById(R.id.img);        TextView tv = (TextView) convertView.findViewById(R.id.textview);        tv.setText(list.get(groupPosition).getSteps().get(childPosition).getStep());        new AsyncTask_Image(new AsyncTask_Image.setImagetListener() {            @Override            public void ImageOnclick(Bitmap bitmap) {                if (bitmap != null)                    img.setImageBitmap(bitmap);                else                    img.setImageResource(R.mipmap.ic_launcher);            }        }).execute(list.get(groupPosition).getSteps().get(childPosition).getImg());        return convertView;    }    @Override    public boolean isChildSelectable(int groupPosition, int childPosition) {        return false;    }}

自定义工具类读取网络请求返回的InputStream

public class StringTools {    public static String GetString(InputStream is) {        try {            ByteArrayOutputStream bos = new ByteArrayOutputStream();            byte[] b = new byte[1024];            while (true) {                int m = is.read(b);                if (m == -1)                    break;                bos.write(b, 0, m);            }            return bos.toString();        } catch (IOException e) {            e.printStackTrace();        }        return null;    }
public class AsyncTask_Image extends AsyncTask<String, Void, Bitmap> {    public interface setImagetListener {        void ImageOnclick(Bitmap bitmap);    }    public setImagetListener imagetlistener;    public AsyncTask_Image(setImagetListener imagetlistener) {        this.imagetlistener = imagetlistener;    }    @Override    protected void onPostExecute(Bitmap bitmap) {        super.onPostExecute(bitmap);        imagetlistener.ImageOnclick(bitmap);    }    @Override    protected Bitmap doInBackground(String... params) {        try {            URL url = new URL(params[0]);            HttpURLConnection connection = (HttpURLConnection) url.openConnection();            connection.setRequestMethod("GET");            connection.setConnectTimeout(5000);            connection.setReadTimeout(5000);            if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {                InputStream is = connection.getInputStream();                return BitmapFactory.decodeStream(is);            }        } catch (IOException e) {            e.printStackTrace();        }        return null;    }}
异步加载网络请求数据,自定义工具类
public class AsyncTask_Image extends AsyncTask<String, Void, Bitmap> {    public interface setImagetListener {        void ImageOnclick(Bitmap bitmap);    }    public setImagetListener imagetlistener;    public AsyncTask_Image(setImagetListener imagetlistener) {        this.imagetlistener = imagetlistener;    }    @Override    protected void onPostExecute(Bitmap bitmap) {        super.onPostExecute(bitmap);        imagetlistener.ImageOnclick(bitmap);    }    @Override    protected Bitmap doInBackground(String... params) {        try {            URL url = new URL(params[0]);            HttpURLConnection connection = (HttpURLConnection) url.openConnection();            connection.setRequestMethod("GET");            connection.setConnectTimeout(5000);            connection.setReadTimeout(5000);            if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {                InputStream is = connection.getInputStream();                return BitmapFactory.decodeStream(is);            }        } catch (IOException e) {            e.printStackTrace();        }        return null;    }}
网络请求数据自定义类
public class AsyncTaskUtils extends AsyncTask<String, Void, String> {    public interface SelectResout {        void OnclickResout(String string);    }    public SelectResout selectresout;    public AsyncTaskUtils(SelectResout selectresout) {        this.selectresout = selectresout;    }    @Override    protected void onPostExecute(String s) {        super.onPostExecute(s);        System.out.println("查询结果:" + s);        selectresout.OnclickResout(s);    }    @Override    protected String doInBackground(String... params) {        try {            URL url = new URL(params[0]);            HttpURLConnection connection = (HttpURLConnection) url.openConnection();            connection.setRequestMethod("GET");            connection.setConnectTimeout(5000);            connection.setReadTimeout(5000);            if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {                InputStream is = connection.getInputStream();                return StringTools.GetString(is);            }        } catch (IOException e) {            e.printStackTrace();        }        return null;    }}

异步加载图片
public class AsyncTask_Image extends AsyncTask<String, Void, Bitmap> {    public interface setImagetListener {        void ImageOnclick(Bitmap bitmap);    }    public setImagetListener imagetlistener;    public AsyncTask_Image(setImagetListener imagetlistener) {        this.imagetlistener = imagetlistener;    }    @Override    protected void onPostExecute(Bitmap bitmap) {        super.onPostExecute(bitmap);        imagetlistener.ImageOnclick(bitmap);    }    @Override    protected Bitmap doInBackground(String... params) {        try {            URL url = new URL(params[0]);            HttpURLConnection connection = (HttpURLConnection) url.openConnection();            connection.setRequestMethod("GET");            connection.setConnectTimeout(5000);            connection.setReadTimeout(5000);            if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {                InputStream is = connection.getInputStream();                return BitmapFactory.decodeStream(is);            }        } catch (IOException e) {            e.printStackTrace();        }        return null;    }}

阅读全文
0 0
原创粉丝点击