使用 Glide 和 FirebaseUI 加载图像不适用于 BaseAdapter

Loading Images with Glide and FirebaseUI not working with BaseAdapter

我正在尝试通过使用 'com.firebaseui:firebase-ui-storage:0.6.0' 包中提供的 Glide 方法扩展 BaseAdapter,在 ListView(我知道它已过时)中加载 ProfileImages。

参考:https://firebase.google.com/docs/storage/android/download-files#downloading_images_with_firebaseui

这里是 Adapter 的 getView() 方法

@Override
public View getView(int position, View convertView, ViewGroup parent) {
...
...
if (tempProfile != null) {
FirebaseStorage storage = FirebaseStorage.getInstance();
StorageReference storageRef = storage.getReferenceFromUrl("path_to_image");

    **** Problem ****
    Glide.with(context /* context */)
            .using(new FirebaseImageLoader())
            .load(storageRef)
            .into(viewHolder.profileImage_IV);
    **** See alternate line of code ****
}
else {
  viewHolder.profileImage_IV.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.no_image));
}

****问题****:代码的滑动行 使所有行的 ImageView 中的图像膨胀(许多不必要的行被图像膨胀) . else{} 部分能够覆盖一些图像,但不能覆盖所有图像。因此,我得到了错误的结果。

观察:但是如果我使用这一行而不是 Glide 代码行,那么我会得到正确的结果。

viewHolder.profileImage_IV.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.accept));

谢谢!

我从 找到了答案。

基本上,如果您使用 Glide 扩充 ImageView,那么您也必须使用 Glide 清除它。我只需要在 else{}

中添加 1 行
else {
    Glide.clear(profileImage_IV);
    viewHolder.profileImage_IV.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.no_image));
}