我想在listview上加载图片,我可以从网址下载图片并在listview上显示,但速度非常慢。 如何提高加载速度? 请帮我。 我使用此代码从url下载图像:
ImageService类:
InputStream input = null;
Bitmap bitmap = null;
try {
URL url = new URL(src);
// We open the connection
URLConnection conection = url.openConnection();
conection.connect();
input = new BufferedInputStream(url.openStream(), 8192);
// we convert the inputStream into bitmap
bitmap = BitmapFactory.decodeStream(input);
input.close();
Log.e("ERROR:","OOOOOOOOOK");
} catch (Exception e) {
Log.e("eRROR:", e.getMessage());
}
return bitmap;
}
用于客户列表视图的ProductAdapter类:
private LayoutInflater mInflater;
private List items = new ArrayList();
public ProductAdapter(Context context, List items) {
mInflater = LayoutInflater.from(context);
this.items = items;
}
public int getCount() {
return items.size();
}
public Product getItem(int position) {
return (Product) items.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
Product s = (Product) items.get(position);
if (convertView == null) {
convertView = mInflater.inflate(R.layout.row_layout, null);
holder = new ViewHolder();
holder.name = (TextView) convertView.findViewById(R.id.name);
holder.pic = (ImageView) convertView.findViewById(R.id.image);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.name.setText(s.getName());
if (s.getImage() != null) {
holder.pic.setImageBitmap(s.getImage());
} else {
holder.pic.setImageResource(R.drawable.ic_launcher);
}
return convertView;
}
static class ViewHolder {
TextView name;
ImageView pic;
}
答案 0 :(得分:1)
使用这些库,它非常简单:D
这个库:
ImageView mImageView = (ImageView)findViewById(R.id.image_view);
Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(mImageView);
答案 1 :(得分:0)
我可以推荐一种不同于魅力的方式:Android查询。
您可以从here
下载该JAR文件AQuery androidAQuery = new AQuery(this);
举个例子:
androidAQuery.id(YOUR IMAGEVIEW).image(YOUR IMAGE TO LOAD, true, true, getDeviceWidth(), ANY DEFAULT IMAGE YOU WANT TO SHOW);
它非常快速和准确,使用它你可以找到更多的功能,如加载时的动画,获取位图(如果需要)等。
答案 2 :(得分:0)
答案 3 :(得分:0)
您必须使用lib来显示图像。使用以下lib: -
答案 4 :(得分:0)
我建议您使用LruCache,它可以大大提高ListViews中加载图像的性能 Caching Bitmaps
Here显示差异的一个例子。
答案 5 :(得分:0)
我将推荐用于加载图像的picasso库,以便使用OkHttp进行快速网络通信。在这里你可以找到这个例子。 https://github.com/AnawazInc/OkHttp-Picasso-Example-Android