Salut J'ai utilisé le code ci-dessous pour charger l'image sur l'élément listview du widget.Comment activer le cache pour l'image bitmap en utilisant SimpleImageLoadingListener dans Universal Image Loader android
Map<Integer, Boolean> flags = Collections.synchronizedMap(new HashMap<Integer, Boolean>());
Bitmap mBitmap;
Handler handler = new Handler(Looper.getMainLooper());
flags.put(position, false);
handler.post(new Runnable() {
@Override
public void run() {
ImageLoader imageLoader = ImageLoader.getInstance();
DisplayImageOptions options = new DisplayImageOptions.Builder().cacheInMemory(true)
.cacheOnDisc(true).resetViewBeforeLoading(true)
.build();
imageLoader.loadImage(item.mTooteet.getThumbUrl1() + "&userToken=" + userPreference.getUserToken(), options,
new SimpleImageLoadingListener() {
@Override
public void onLoadingStarted(String imageUri, View view) {
Log.d(TAG,"onLoadingStarted "+position);
}
@Override
public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
Log.d(TAG,"onLoadingFailed "+position);
flags.put(position, true);
}
@Override
public void onLoadingCancelled(String imageUri, View view) {
Log.d(TAG,"onLoadingCancelled "+position);
flags.put(position, true);
}
@Override
public void onLoadingComplete(String arg0, View arg1, Bitmap bitmap) {
Log.d(TAG,"onLoadingComplete "+position);
mBitmap = bitmap;
flags.put(position, true);
}
});
}
});
while (!flags.get(position)) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
flags.put(position, false);
if (mBitmap != null) {
Log.d(TAG,"onLoadingComplete mBitmap not null "+position);
remoteView.setImageViewBitmap(R.id.feed_image, mBitmap);
} else {
Log.d(TAG,"onLoadingComplete mBitmap null "+position);
remoteView.setImageViewResource(R.id.feed_image, R.drawable.app_icon);
}
mBitmap = null;
Et dans mon dossier de candidature que j'ai utilisé le code ci-dessous,
// UNIVERSAL IMAGE LOADER SETUP
DisplayImageOptions defaultOptions = new DisplayImageOptions.Builder()
.cacheOnDisc(true).cacheInMemory(true)
.imageScaleType(ImageScaleType.EXACTLY)
.displayer(new FadeInBitmapDisplayer(300)).build();
ImageLoaderConfiguration uilConfig = new ImageLoaderConfiguration.Builder(
getApplicationContext())
.defaultDisplayImageOptions(defaultOptions)
.memoryCache(new WeakMemoryCache())
.discCacheSize(100 * 1024 * 1024).build();
ImageLoader.getInstance().init(uilConfig);
// END - UNIVERSAL IMAGE LOADER SETUP
Mais ce code téléchargera l'image de chaque URL. Je ne veux pas le recharger à chaque fois que vous faites défiler la vue de ma liste de widgets d'applications. Il doit être conservé dans le cache après sa première utilisation. Pourriez-vous s'il vous plaît me suggérer une idée pour le faire?
Ceci n'est pas une solution à votre question mais une suggestion pour laquelle vous ne pouvez pas utiliser [glide] (https://github.com/bumptech/glide). C'est mieux dans mon cas. J'espère que vous aussi? – Raghavendra
@Raghavendra Salut j'utilise un widget où nous pouvons définir l'image sur la vue de l'image comme ce remoteView.setImageViewBitmap (R.id.feed_image, mBitmap); où R.id.feed_image est mon identifiant de vue d'image. J'ai de la difficulté à utiliser la bibliothèque de glissement dans le widget. Savez-vous comment utiliser le glissement dans un widget comme celui-ci? – Sangeetha