您的位置:首页 > 理论基础 > 计算机网络

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

2017-11-05 20:12 232 查看
@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 主线程子线程  注意 中括号里面因为图片所以属性是Bitmap
class 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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐