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

 
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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值