2016-04-14 4 views
1

Wie kann ich dies implementieren? Ich habe überall gesucht und ich bin verloren. Wenn mich jemand aufklären könnte, wäre das großartig. Dies ist meine aktuellen benutzerdefinierten adapter:Implement universal Bild loader auf benutzerdefinierte listvew Android

public class CustomListAdapter extends ArrayAdapter<String> 
{ 
private final Activity context; 
private final String[] itemname; 
private final String[] imageUrls; 

public CustomListAdapter(Activity context, String[] itemname, String[] imageUrls) { 
    super(context, R.layout.mylist, itemname); 
    this.context = context; 
    this.itemname = itemname; 
    this.imageUrls = imageUrls; 
    //ImageLoader imageLoader = new ImageLoader(activity.getApplicationContext()); 
} 

public View getView(int position,View view,ViewGroup parent) { 
    LayoutInflater inflater=context.getLayoutInflater(); 
    View rowView=inflater.inflate(R.layout.mylist, null,true); 
    TextView txtTitle = (TextView) rowView.findViewById(R.id.item); 
    ImageView imageView = (ImageView) rowView.findViewById(R.id.icon); 
    TextView extratxt = (TextView) rowView.findViewById(R.id.textView1); 
    txtTitle.setText(itemname[position]); 
    //imageLoader.displayImage(imageUrls[position], imageView, null); 
    extratxt.setText("Description "+itemname[position]); 
    return rowView; 
    }; 
} 

Beachten Sie, dass der obige Code einige Fehler hat. Erstens, bei der activity.getApplicationContext(): Ich weiß nicht warum. Für die zweite sagt der imageLoader, dass das Symbol nicht aufgelöst werden kann.

+0

Folgen Sie den Schritten in dem unten stehenden Link erwähnt https://github.com/nostra13/Android-Universal-Image-Loader http://javatechig.com/android/universal-image-loader-library-in -android – Sanjeev

Antwort

1

Bitte überprüfen Sie unter Code

public class CustomListAdapter extends ArrayAdapter<String> 
{ 
private final Activity context; 
private final String[] itemname; 
private final String[] imageUrls; 
ImageLoader imageLoader; 
public CustomListAdapter(Activity context, String[] itemname, String[] imageUrls) { 
    super(context, R.layout.mylist, itemname); 

    this.context = context; 
    this.itemname = itemname; 
    this.imageUrls = imageUrls; 
    imageLoader = new ImageLoader(context); 
} 

public View getView(int position,View view,ViewGroup parent) { 
    LayoutInflater inflater=context.getLayoutInflater(); 
    View rowView=inflater.inflate(R.layout.mylist, null,true); 

    TextView txtTitle = (TextView) rowView.findViewById(R.id.item); 
    ImageView imageView = (ImageView) rowView.findViewById(R.id.icon); 
    TextView extratxt = (TextView) rowView.findViewById(R.id.textView1); 

    txtTitle.setText(itemname[position]); 
    imageLoader.displayImage(imageUrls[position], imageView, null); 
    extratxt.setText("Description "+itemname[position]); 
    return rowView; 
    } 
} 

keine Initialisierung Imageloader in Anwendungsklasse nicht vergessen.

+0

die activity.getApplicartionContext() immer noch geben mir Fehler ... und wie initialisieren? Dies ist das erste Mal, dass ich den Universal Image Loader benutze. –

+0

überprüfen Sie die aktualisierte Antwort. –

0

okay, ich mein Problem gelöst, vielleicht sollte ich es hier für die Menschen in der Zukunft teilen :)

zuerst muss ich die ImageLoader in Haupttätigkeit initialisieren (nicht im customlistadapter) wie folgt aus:

imageLoader = ImageLoader.getInstance(); 
imageLoader.init(ImageLoaderConfiguration.createDefault(getBaseContext())); 

nächsten ich nenne die Imageloader aus dem customlistadapter:

MainActivity.imageLoader.displayImage(imageUrls[position],imageView);

und die Decla Ration des Imageloader:

public static ImageLoader imageLoader;

Ich weiß nicht, ob es ein Problem verursachen würde, wenn öffentliche und statisch deklariert, aber hey, es funktioniert.

0
Try implementing the below code in your adapter 

     ImageLoader imageLoader = ImageLoader.getInstance(); 

     imageLoader.init(ImageLoaderConfiguration.createDefault(context)); 
     DisplayImageOptions option = new DisplayImageOptions.Builder().displayer(new RoundedBitmapDisplayer(1000)).cacheInMemory(true) 
       .cacheOnDisc(true).resetViewBeforeLoading(true) 
       .showImageForEmptyUri(R.drawable.ic_launcher) 
       .showImageOnFail(R.drawable.ic_launcher) 
       .showImageOnLoading(R.drawable.ic_launcher).bitmapConfig(Bitmap.Config.RGB_565).build(); 


     imageLoader.displayImage(imageurl,imageview,option);