Загружаю 10 картинок из интернета, использую universal image loader(UIL) для кеширования. Эти 10 картинок в списке, проблема в том что при скроллинге сначала они подгружаются через секунду примерно, а дальше и вовсе секунд через 5-10. Вот код адаптера
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.video_preview_item, parent, false);
TextView textView = (TextView) rowView.findViewById(R.id.textView);
ImageView imageView = (ImageView) rowView.findViewById(R.id.imageView);
final FrameLayout frameLayout = (FrameLayout) rowView.findViewById(R.id.frameLayout);
frameLayout.getLayoutParams().height = (int) (values[position].imageHeight * 0.8f);
DisplayImageOptions options = new DisplayImageOptions.Builder().
cacheOnDisk(true).
cacheInMemory(false).
delayBeforeLoading(0).
bitmapConfig(Bitmap.Config.RGB_565).
resetViewBeforeLoading(false).
postProcessor(new BitmapProcessor() {
@Override
public Bitmap process(Bitmap bmp) {
int width = context.getResources().getDisplayMetrics().widthPixels;
int height = width*bmp.getHeight()/bmp.getWidth();
return Bitmap.createScaledBitmap(bmp, width, height, false);
}
}).
build();
if(position + 1 != values.length) { // Это попытка загружать следующею картинку, эффекта не принесло
ImageLoader.getInstance().loadImage(values[position+1].imageUrl, options, new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
// Do whatever you want with Bitmap
}
});
}
ImageLoader.getInstance().displayImage(values[position].imageUrl, imageView, options , new ImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
//...
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
//...
}
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
int clientWidth = context.getResources().getDisplayMetrics().widthPixels;
int calHeight = loadedImage.getHeight() * clientWidth/loadedImage.getWidth();
values[position].imageHeight = calHeight;
frameLayout.getLayoutParams().height = (int) (values[position].imageHeight * 0.8f);
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) view.getLayoutParams();
params.height = values[position].imageHeight;
//((FrameLayout.LayoutParams) view.getLayoutParams()).setMargins(40,0,0,0);
//params.setMargins(0, 0, 0, 0);
//Log.e("what", "")
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
//...
}
}
);
textView.setText(values[position].clipName);
return rowView;
}