gpt4 book ai didi

java - 使用 Picasso 加载的图像在滚动时被删除并不断重新加载

转载 作者:太空宇宙 更新时间:2023-11-04 11:00:50 25 4
gpt4 key购买 nike

我有一个使用 Picasso 从 Firebase Storage 检索的图像列表。图像加载完美。但每当我滚动时,加载的图像就会被删除,并在我向后滚动时重新加载,这对用户的眼睛来说确实很烦人。我该如何解决这个问题,以便每个图像仅加载一次,并且即使用户滚动,加载的图像也保持原样。

这是我的 xml 中的 ListView:

<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/lv"
android:isScrollContainer="false"
android:focusable="true"
android:layout_weight="1"
android:layout_marginTop="3dp"
android:scrollingCache="true"
/>

这是列表项内的 ImageView:

<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/itemImage"
android:background="@color/white"
android:scaleType="fitCenter"
android:layout_centerVertical="true"
android:layout_weight="0"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:padding="5dp"
android:src="@drawable/white_filling"
>
</ImageView>

这是我的自定义适配器:

public class Firebase_CustomAdapter extends BaseAdapter {
public static Context c;
ArrayList<Firebase_Holder> spacecrafts;

public Firebase_CustomAdapter(Context c, ArrayList<Firebase_Holder> spacecrafts) {
this.c = c;
this.spacecrafts = spacecrafts;
}

@Override
public int getCount() {
return spacecrafts.size();
}
@Override
public Object getItem(int position) {
return spacecrafts.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {

if(convertView==null)
{
convertView= LayoutInflater.from(c).inflate(R.layout.list_item_books,parent,false);

ViewHolder viewHolder = new ViewHolder();
viewHolder.itemImage = (MyImageView) convertView.findViewById(R.id.itemImage);
}

final MyImageView itemImage= (MyImageView) convertView.findViewById(R.id.itemImage);

final Firebase_Holder s= (Firebase_Holder) this.getItem(position);


StorageReference mStorage = FirebaseStorage.getInstance().getReference();
final StorageReference Adv_mStorge = mStorage.child("Items_pictures").child(s.getname().toLowerCase() + ".jpg");

Adv_mStorge.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {

Picasso.with(c).load(uri)
.into(itemImage);

}
});

return convertView;
}


public class ViewHolder {
MyImageView itemImage;
}

}

最佳答案

我解决了它,问题是我放置的用于获取 URL 的监听器。我通过向 Picasso 提供直接 URL 解决了这个问题

关于java - 使用 Picasso 加载的图像在滚动时被删除并不断重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46912748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com