Android, Comment instancier Image Universelle de Chargeur?

Dans mon projet j'ai un affichage de la grille qui contient des images. Basé sur mes recherches, Image Universelle De Chargeur projet est conçu pour télécharger des images en arrière-plan. Puis, en fonction de l'échantillon, j'ai mis mon adaptateur. C'est le code que j'ai écrit:

package cam.astro.mania.adapters;
import java.io.File;
import java.util.ArrayList;
import com.astro.mania.activities.Contestants_Photo;
import com.astro.mania.activities.R;
import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;
import com.nostra13.universalimageloader.cache.memory.impl.UsingFreqLimitedMemoryCache;
import com.nostra13.universalimageloader.core.DecodingType;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.ImageLoadingListener;
import android.app.ProgressDialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.Environment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ProgressBar;
public class ContestantsPhotoAdapter extends BaseAdapter {
private Context context;
private LayoutInflater myInflater;
private Bitmap[] bitmapList;
private Bitmap bitmap;
private ArrayList<String> ListOfURLs;
private ImageLoader imageLoader;
private ProgressDialog progressBar;
private File cacheDir;
private ImageLoaderConfiguration config;
private DisplayImageOptions options;
public ContestantsPhotoAdapter(Context c) {
context = c;
myInflater = LayoutInflater.from(c);
//Get singleton instance of ImageLoader
imageLoader = ImageLoader.getInstance();
}
public void setImageURLs(ArrayList<String> list){
ListOfURLs = list;
for(String str: ListOfURLs)
Log.i("URL Address>>>>", str);
cacheDir = new File(Environment.getExternalStorageDirectory(), "UniversalImageLoader/Cache");
//Create configuration for ImageLoader
config = new ImageLoaderConfiguration.Builder(context)
.maxImageWidthForMemoryCache(800)
.maxImageHeightForMemoryCache(800)
.httpConnectTimeout(5000)
.httpReadTimeout(30000)
.threadPoolSize(5)
.threadPriority(Thread.MIN_PRIORITY + 2)
.denyCacheImageMultipleSizesInMemory()
.memoryCache(new UsingFreqLimitedMemoryCache(2000000)) //You can pass your own memory cache implementation
.discCache(new UnlimitedDiscCache(cacheDir)) //You can pass your own disc cache implementation
.defaultDisplayImageOptions(DisplayImageOptions.createSimple())
.build();
//Creates display image options for custom display task
options = new DisplayImageOptions.Builder()
.showStubImage(R.drawable.icon_loading)
.showImageForEmptyUrl(R.drawable.icon_remove)
.cacheInMemory()
.cacheOnDisc()
.decodingType(DecodingType.MEMORY_SAVING)
.build();
//Initialize ImageLoader with created configuration. Do it once.
imageLoader.init(config);
}
@Override
public int getCount() {
return ListOfURLs.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent){
ViewHolder holder;
if (convertView == null) {
convertView = myInflater.inflate(R.layout.grid_contestantsphoto, null);
holder = new ViewHolder();
holder.ivIcon = (ImageView) convertView.findViewById(R.id.imvContestantsPhoto_icon);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
//       holder.ivIcon.setImageBitmap(bitmapList[position]);
String imageUrl = ListOfURLs.get(position);
//Load and display image
imageLoader.displayImage(imageUrl, holder.ivIcon, options, new ImageLoadingListener() {
@Override
public void onLoadingStarted() {
showLoading();
}
@Override
public void onLoadingFailed() {
stopLoading();
}
@Override
public void onLoadingComplete() {
stopLoading();
}
});
return convertView;
}   
static class ViewHolder {
ImageView ivIcon;
}
/*-----------------------------------------------------------------------------------
*  Showing /Stopping progress dialog which is showing loading animation
*  ---------------------------------------------------------------------------------*/
private void showLoading(){
progressBar = ProgressDialog.show(context, "", "");
progressBar.setContentView(R.layout.anim_loading);
progressBar.setCancelable(true);
final ImageView imageView = (ImageView) progressBar.findViewById(R.id.blankImageView); 
Animation rotation = AnimationUtils.loadAnimation(context, R.anim.rotate);
imageView.startAnimation(rotation); 
}
private void stopLoading() {        
if(progressBar.isShowing())
progressBar.dismiss();
}
}

Ce que j'ai fait?
1) j'ai téléchargé universal-image-loader-1.2.3.jar et de le mettre en MY_PROJECT/lib dossier, puis j'ai ajouté ce fichier jar dans java build path
Android, Comment instancier Image Universelle de Chargeur?

2) Parce que pour l'encaissement des images, cette bibliothèque a besoin d'avoir accès aux locaux de stockage, donc j'ai ajouté <uses-permission android:name = "android.permission.WRITE_EXTERNAL_STORAGE"/> de fichier manifest.

3) Maintenant, quand je le lance, l'application se bloque et points de imageLoader = ImageLoader.getInstance();. Logcat message est:

dalvikvm: Could not find class 'cam.astro.mania.adapters.ContestantsPhotoAdapter$1', referenced from method cam.astro.mania.adapters.ContestantsPhotoAdapter.getView
AndroidRuntime: java.lang.NoClassDefFoundError: com.nostra13.universalimageloader.core.ImageLoader
AndroidRuntime: at cam.astro.mania.adapters.ContestantsPhotoAdapter.<init>(ContestantsPhotoAdapter.java:50)

Basé sur mes recherches (par exemple ici), j'ai trouvé que ce message "vient quand la Machine Virtuelle Java n'est pas en mesure de trouver un particulier de la classe au moment de l'exécution qui a été disponible pendant les temps de compilation."

which version of ADT are you using now ?
Merci Samir, je ne suis pas sûr, comment puis-je l'obtenir?
Voir ici
Merci pour les infos utiles. Mon ADT Version est de 18 ans. J'ai au-dessus de problème quand j'ai ajouter un bocal en Java build path et son nom de dossier est "lib". dans ce cas, je peux lancer l'application avec mentionnées problème de plantage.
Quand j'ai supprimer le fichier jar de Java chemin de classe et de changer le nom de dossier "lib" pour "libs", puis le fichier jar ajoute automatiquement à Android Dépendances. Maintenant, tout va bien 🙂 Merci beaucoup pour votre aide

OriginalL'auteur Hesam | 2012-04-21