2014-06-09 3 views
0

Я хочу загрузить изображение на listview, я могу загрузить изображение с URL-адреса и показать в списке, но скорость очень медленная. Как я могу повысить скорость загрузки? , пожалуйста, помогите мне. я использовать этот код для загрузки изображения из URL:Загрузка изображения, но медленная скорость на android

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 класс для таможенных ListView:

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

Вы можете видеть из этого поста, Действительно хороший http: //stackoverflow.com/questions/541966/how-do-i-do-a-lazy-load-of-images-in-listview – CodeWarrior

ответ

0

Я могу порекомендовать другой способ который работает как шарм: Android-запрос.

Вы можете скачать этот файл JAR из here

AQuery androidAQuery = новый AQuery (это);

В качестве примера:

androidAQuery.id(YOUR IMAGEVIEW).image(YOUR IMAGE TO LOAD, true, true, getDeviceWidth(), ANY DEFAULT IMAGE YOU WANT TO SHOW); 

Это очень быстро и точно, и с помощью этого вы можете найти гораздо больше возможностей, таких как анимация при загрузке, получение растрового изображения (при необходимости) и т.д.

0

Я рекомендую вам использовать LruCache, улучшает много загрузка изображений в ListViews.
Caching Bitmaps

Here пример, показывающий разницу.

1

использовать эти библиотеки, ее очень хорошо и просто: D

Это библиотеки:

picasso

Volley image loader

ImageView mImageView = (ImageView)findViewById(R.id.image_view); 
Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(mImageView); 
Смежные вопросы