Week2

来源:互联网 发布:室内装修设计软件 编辑:程序博客网 时间:2024/05/17 03:49

MainActivity

package wangwenqian.bwie.com.week02;

import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.google.gson.Gson;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    private ListView listView;
    private List<Bean.ResultBean.DataBean.StepsBean> lists;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获取资源ID
        listView = (ListView) findViewById(R.id.lv);
        String str = "http://apis.juhe.cn/cook/query.php";
        new Asynk().execute(str);

    }
    class Asynk extends AsyncTask<String,Void,String>{



        @Override
        protected String doInBackground(String... strings) {
            String str = strings[0];
            String data = getData(str);
            return data;
        }
        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            Gson gson = new Gson();
            Bean bean = gson.fromJson(s, Bean.class);
            List<Bean.ResultBean.DataBean> data = bean.getResult().getData();
            for (Bean.ResultBean.DataBean list:data
                    ) {
                lists = list.getSteps();

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        listView.setAdapter(new Myadapter());
                        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                            @Override
                            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                                Intent intent = new Intent(MainActivity.this,HomeActivity.class);
                                intent.putExtra("name",lists.get(i).getStep());
                                intent.putExtra("img",lists.get(i).getImg());
                                startActivity(intent);
                            }
                        });
                    }
                });

            }

        }
    }
    public String getData(String str){
        try {
            URL url = new URL(str);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("POST");
            connection.setReadTimeout(5000);
            connection.setConnectTimeout(5000);


            String name = "key=3220a0424d486f8953af8a4a42f17f8e&menu=秘制红烧肉";
            OutputStream outputStream = connection.getOutputStream();
            outputStream.write(name.getBytes());
            if (connection.getResponseCode()==200){
                InputStream inputStream = connection.getInputStream();
                String json = getJson(inputStream);
                if (!TextUtils.isEmpty(json)){
                    return json;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    private String getJson (InputStream inputStream){
        try {
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            byte[] buffer = new byte[1024];
            int len = 0;
            while ((len = inputStream.read(buffer))!=-1){
                bos.write(buffer,0,len);
            }
            bos.close();
            inputStream.close();
            return bos.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
    class Myadapter extends BaseAdapter{

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

        @Override
        public Object getItem(int i) {
            return lists.get(i);
        }

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

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            ViewHolder holder = null;
            if (view==null){
                view = View.inflate(MainActivity.this, R.layout.item, null);
                holder = new ViewHolder();
                holder.imageView = (ImageView) view.findViewById(R.id.img);
                holder.textView = (TextView) view.findViewById(R.id.tv);

                holder.textView.setText(lists.get(i).getStep());
                getImg(lists.get(i).getImg(),holder.imageView);
                view.setTag(holder);
            }else {
                holder = (ViewHolder) view.getTag();
            }
            return view;
        }
        class ViewHolder{
            ImageView imageView;
            TextView textView;
        }
    }
    private void getImg(String path, final ImageView imageView){
        new AsyncTask<String,Void,Bitmap>(){

            @Override
            protected Bitmap doInBackground(String... strings) {
                try {
                    String path = strings[0];
                    URL url = new URL(path);
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.setConnectTimeout(5000);
                    connection.setReadTimeout(5000);

                    if (connection.getResponseCode()==200){
                        InputStream inputStream = connection.getInputStream();
                        Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
                        return bitmap;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return null;
            }

            @Override
            protected void onPostExecute(Bitmap bitmap) {
                super.onPostExecute(bitmap);
                if (bitmap!=null){
                    imageView.setImageBitmap(bitmap);
                }else{
                    imageView.setImageResource(R.mipmap.ic_launcher);
                }
            }
        }.execute(path);
    }
}

HomeActivity

package wangwenqian.bwie.com.week02;

import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class HomeActivity extends AppCompatActivity {


    private ImageView img2;
    private TextView tv2;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main2);
        img2 = (ImageView) findViewById(R.id.img2);
        tv2 = (TextView) findViewById(R.id.tv2);

        Intent intent = getIntent();
        String name = intent.getStringExtra("name");
        final String img = intent.getStringExtra("img");

        tv2.setText(name);
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    URL imgurl = new URL(img);
                    final Bitmap bitmap = LoadImg(imgurl);
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            img2.setImageBitmap(bitmap);
                        }
                    });
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                }

            }
        }).start();



    }
    private Bitmap LoadImg(final URL Imgurl) {

        try {
            HttpURLConnection connection = (HttpURLConnection) Imgurl.openConnection();
            if(200==connection.getResponseCode()){
                InputStream is = connection.getInputStream();
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                int len = 0;
                byte[] bt = new byte[1];
                while((len=is.read(bt))!=-1){
                    baos.write(bt,0,len);
                }

                Bitmap bitmap = BitmapFactory.decodeByteArray(baos.toByteArray(), 0, baos.size());
                return bitmap;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;

    }
}