Ich verwende eine GridView, um 20 Bilder anzuzeigen. Ich hole und zeige die Bilder aus dem Internet mit Glide in einem Adapter, den ich erstelle. Das Problem ist, dass, auch wenn alle Bilder heruntergeladen werden, wenn ich die Rasteransicht scrolle, ich die Bilder mit einer verblassenden Animation sehe. Ich will das nicht. Ich möchte, dass alle Bilder in die Rasteransicht geladen werden, ohne dass sie angezeigt werden, wenn ich schneller scrolle.Android GridView Laden von Bildern mit Adapter und Glide
Ich habe versucht mit diskcache() und dontAnimate() aber es löste mein Problem nicht. Ich denke, das Problem ist, dass ich 4 Zellen der Gridview zeige. Wenn ich den Adapter scrolle, rufe das getView auf, um andere zwei Zellen zu zeigen und entferne die 2, die ich scrolle. Das Problem ist, dass die getview jedes Mal Zeit braucht, um andere zwei Zellen zu zeigen, und ich habe den Effekt, der wie ein Laden aussieht. Ich möchte, dass mein Szenario wie eine Rasteransicht aussieht, in der alle 20 Zellen vorhanden und zugewiesen sind.
Das ist mein Adapter:
public class ImagesAdapter extends BaseAdapter {
private Context mContext;
private ArrayList<Picture> images;
public ImagesAdapter(Context context, int resource, ArrayList<Picture> inputImages) {
super();
this.mContext = context;
this.images = inputImages;
}
@Override
public int getCount() {
return images.size();
}
@Override
public Picture getItem(int position) {
return images.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View row = convertView;
ViewHolder holder = null;
if (row == null) {
row = LayoutInflater.from(mContext).inflate(R.layout.grid_item_layout, null);
holder = new ViewHolder();
holder.imageView = (ImageView) row.findViewById(R.id.grid_item_image);
holder.id = images.get(position).getImageId();
row.setTag(holder);
}
else {
holder = (ViewHolder) row.getTag();
holder.id = images.get(position).getImageId();
}
Picture pic = images.get(position);
Glide
.with(mContext)
.load(pic.getBigImageUrl())
.into(holder.imageView);
return row;
}
public class ViewHolder {
ImageView imageView;
public String id;
}
}
Kann mir jemand helfen Lösung zu finden? Dank all
Glide wird versuchen, Ihre Bilder herunterzuladen, wenn sie auf dem Bildschirm erscheinen. Es wird also eine Verzögerung geben, bis sie in deiner Zelle auftauchen. Wenn Sie keine Verzögerung wünschen, müssen Sie diese Bilder vorher herunterladen. Wenn Glide Cache-Optionen anbietet, erscheinen Ihre Bilder sofort zum zweiten Mal, aber Sie müssen immer darauf warten, dass sie das erste Mal herunterladen. –
Ja, Glide lädt sie zum ersten Mal herunter. Aber mein Problem ist nicht zum ersten Mal. Das zweite Mal, und ich habe überprüft, dass alle Bilder heruntergeladen werden, und selbst wenn alle heruntergeladen werden, erscheinen sie auf der Bildlauf nicht sofort. – denno