Ich benutze die Universal Image Loader-Bibliothek, um Bilder vom Server in meiner Recycler-Ansicht einzustellen. In meiner Recycler-Ansicht, wenn ich anfange, darauf zu scrollen, wird es für ein paar Sekunden nicht zusammenhängende Bilder einrichten und danach wird es ein echtes Bild setzen. Ich weiß nicht, wo das Problem ist.Universal Image Loader Set nicht verwandte Bilder
Das ist mein Adapter, dass ich mit:
public class HistoryDetailAdapter extends RecyclerView.Adapter<HistoryDetailAdapter.ViewHolder> {
private List<PList> menuItems;
private Context mContext;
private ActivityHistoryDetails activityHistoryDetails;
private DisplayImageOptions defaultOptions;
private ImageLoaderConfiguration config;
public HistoryDetailAdapter(List<PList> menuItems, Context mContext) {
this.menuItems = menuItems;
this.mContext = mContext;
this.activityHistoryDetails = (ActivityHistoryDetails) mContext;
byte[] toEncrypt = (G.getPremiumState()[0] + ":" + G.getPremiumState()[1]).getBytes();
String encryptedCredentials = Base64.encodeToString(toEncrypt, Base64.DEFAULT);
Map<String, String> headers = new HashMap();
headers.put("Authorization", "Basic " + encryptedCredentials);
defaultOptions = new DisplayImageOptions.Builder()
.cacheInMemory(false)
.cacheOnDisk(false)
.resetViewBeforeLoading(true)
.delayBeforeLoading(5000)
.showImageOnLoading(R.drawable.loading_02)
.showImageOnFail(R.drawable.ic_empty_white_box)
.extraForDownloader(headers)
.build();
config = new ImageLoaderConfiguration.Builder(activityHistoryDetails)
.defaultDisplayImageOptions(defaultOptions)
.imageDownloader(new AuthDownloader(activityHistoryDetails))
.build();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
ImageView imgDefault;
LinearLayout parentLayout;
CoordinatorLayout coordinatorLayout;
public ViewHolder(View v) {
super(v);
imgDefault = (ImageView) v.findViewById(R.id.img_defaultImage);
parentLayout = (LinearLayout) v.findViewById(R.id.parentLayout);
coordinatorLayout = (CoordinatorLayout) v.findViewById(R.id.coordinatorLayout);
}
}
@Override
public HistoryDetailAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// Create a new View
final View v = LayoutInflater.from(activityHistoryDetails).inflate(R.layout.activity_history_detail_recycler, parent, false);
ViewHolder vh = new ViewHolder(v);
return vh;
}
@Override
public void onBindViewHolder(final ViewHolder holder, final int position) {
//Download and Load Default Image from server into imgDefault ImageView
String url = "http://192.168.14.77:8080/api/images/download/";
if (menuItems.get(position).getPDefaultImage().getIId() != null) {
url += menuItems.get(position).getPDefaultImage().getIId();
ImageLoader imageLoader = ImageLoader.getInstance(); // Get singleton instance
imageLoader.init(config);
imageLoader.handleSlowNetwork(true);
// Load image, decode it to Bitmap and return Bitmap to callback
ImageSize targetSize = new ImageSize(120, 120); // result Bitmap will be fit to this size
imageLoader.loadImage(url, targetSize, new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
// Do whatever you want with Bitmap
holder.imgDefault.setImageBitmap(loadedImage);
}
});
} else {
holder.imgDefault.setImageResource(R.drawable.loading_01);
}
}
@Override
public int getItemCount() {
if (menuItems.size() > 0) {
return menuItems.size();
} else {
return 0;
}
}
public List<PList> getList() {
return menuItems;
}
}
Dank für Ihre Antworten danken.
Ich benutzte Picasso, aber es funktioniert nicht gut für mich – Ehsan
Sie warten Bild herunterladen hier abgeschlossen. Glide machen es leicht. Dies ist eine einfache Verwendung. GlideApp.with (this) .load (yourur) .into (imageView); –