在BaseAdapter中 list优化 + 网络 获取图片利用线程传输

来源:互联网 发布:苹果mac输入法设置 编辑:程序博客网 时间:2024/06/05 18:41

@Override
public View getView(int position, View convertView, ViewGroup parent) {
viewHolder holder;
if (convertView == null) {
holder = new viewHolder();
convertView = View.inflate(context, R.layout.item_list, null);
//text
holder.i_text = (TextView) convertView.findViewById(R.id.i_text);
//图片
holder.i_imageview = (ImageView) convertView.findViewById(R.id.i_imageview);
convertView.setTag(holder);
} else {
// viewholder优化
holder = (viewHolder) convertView.getTag();
}
holder.i_text.setText(list.get(position).getTitle());

    // json封装的图片进项线程调用    String picPath= list.get(position).getPicUrl().toString();    Log.d("SSS","+++适配器中:+++"+picPath);    //发送请求    new MyPicTask(holder.i_imageview).execute(picPath.toString());    return convertView;}class viewHolder {    TextView i_text;    ImageView i_imageview;}// AsyncTask 主线程子线程  注意 中括号里面因为图片所以属性是Bitmapclass MyPicTask extends AsyncTask<String, Void, Bitmap> {    ImageView i_imageview;    public MyPicTask(ImageView i_imageview) {        this.i_imageview = i_imageview;    }    @Override    public 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()==200){                InputStream stream=connection.getInputStream();                Bitmap bitmap= BitmapFactory.decodeStream(stream);                return  bitmap;            }        } catch (Exception e) {            e.printStackTrace();        }        return null;    }    @Override    public void onPostExecute(Bitmap bitmap) {        super.onPostExecute(bitmap);        i_imageview.setImageBitmap(bitmap);    }}
原创粉丝点击