【发布时间】:2019-04-16 20:20:31
【问题描述】:
我有 GridView 适配器,我想通过照片的 URL 从 Firebase 存储下载照片。
当我将 URL 传递给 GridViewAdapter 时,照片是空白的。有空间,但没有图片。像透明图片一样。
如果我传递在 Google 中找到的图像 URL,它可以工作,但它不适用于 Firebase 存储的 URL。怎么了?
这就是我尝试从 Firebase 存储获取 URL 的方式 我正在获取包含所有 URL 的节点的 DataSnapshot
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
photos.clear();
for(DataSnapshot ds: dataSnapshot.getChildren()){
String photoURL = ds.getValue(String.class);
try {
photos.add(photoURL);
}catch (NullPointerException e) {
}
}
gridViewAdapter = new GridViewAdapter(getContext(), photos);
gridView.setAdapter(gridViewAdapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
我的 GridViewAdapter.class,getView 方法
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View gridView = convertView;
if(convertView == null){
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
gridView = inflater.inflate(R.layout.image_item,null);
}
ImageView imageView = gridView.findViewById(R.id.image_from_photo_album);
Picasso.with(context).load(photos.get(position)).into(imageView);
return imageView;
}
不带 Firebase 存储 URL 的 ScreenView:
带有 Firebase 存储 URL 的 ScreenView:
【问题讨论】:
-
你调试了 url 吗?而不是尝试在 i 中查看。浏览器是否正确?
-
是的,我做到了。它已正确保存在我的 Firebase 数据库中。如果我直接从 Firebase 数据库中的图像目录复制 URL 并将其粘贴到 Picasso,它会给我相同的结果。
-
我推荐你把 Picasso 改成 Glide ))) Picasso 库有很多问题,Glide 很快解决了。可能毕加索的缓存有问题,或者下载出错。