Async加载图片listview

来源:互联网 发布:英雄钢笔淘宝旗舰店 编辑:程序博客网 时间:2024/06/05 16:16
package com.bwie.loadimage;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.AsyncTask;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.ListView;import android.widget.TextView;import com.bwie.loadimage.bean.MenuInfo;import com.bwie.loadimage.utils.StreamTools;import com.google.gson.Gson;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.net.URLEncoder;import java.util.List;public class MainActivity extends AppCompatActivity {    private ListView listview;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        listview = (ListView) findViewById(R.id.listview);        getMenuInfo("http://apis.juhe.cn/cook/query.php?key=85ccc6561e8247986f378b20ef34589a&menu=" + URLEncoder.encode("秘制红烧肉"));    }    public void getMenuInfo(String path) {        new AsyncTask<String, Void, String>() {            @Override            protected String doInBackground(String... strings) {                try {                    HttpURLConnection connection = (HttpURLConnection) new URL(strings[0]).openConnection();                    connection.setRequestMethod("GET");                    connection.setConnectTimeout(5 * 1000);                    connection.setReadTimeout(5 * 1000);                    if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {                        InputStream is = connection.getInputStream();                        String json = StreamTools.getString(is);                        return json;                    }                } catch (Exception e) {                    e.printStackTrace();                }                return null;            }            @Override            protected void onPostExecute(String s) {                super.onPostExecute(s);                if (s != null) {                    Gson gson = new Gson();                    MenuInfo menuInfo = gson.fromJson(s, MenuInfo.class);                    List<MenuInfo.ResultBean.DataBean.StepsBean> steps = menuInfo.getResult().getData().get(0).getSteps();                    listview.setAdapter(new Myadapter(steps));                }            }        }.execute(path);    }    public void loadImage(String imagePath, final ImageView imageview) {        new AsyncTask<String, Void, Bitmap>() {            @Override            protected Bitmap doInBackground(String... strings) {                try {                    HttpURLConnection connection = (HttpURLConnection) new URL(strings[0]).openConnection();                    connection.setRequestMethod("GET");                    connection.setConnectTimeout(5 * 1000);                    connection.setReadTimeout(5 * 1000);                    if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {                        InputStream is = connection.getInputStream();                        Bitmap bitmap = BitmapFactory.decodeStream(is);                        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(imagePath);    }    class Myadapter extends BaseAdapter {        public List<MenuInfo.ResultBean.DataBean.StepsBean> steps;        public Myadapter(List<MenuInfo.ResultBean.DataBean.StepsBean> steps) {            this.steps = steps;        }        @Override        public int getCount() {            return steps.size();        }        @Override        public Object getItem(int i) {            return steps.get(i);        }        @Override        public long getItemId(int i) {            return i;        }        @Override        public View getView(int i, View view, ViewGroup viewGroup) {            if (view == null) {                view = View.inflate(getApplicationContext(), R.layout.item, null);            }            ImageView image = (ImageView) view.findViewById(R.id.image);            TextView tv = (TextView) view.findViewById(R.id.tv);            loadImage(steps.get(i).getImg(), image);            tv.setText(steps.get(i).getStep());            return view;        }    }}
原创粉丝点击