How to store Url into ArrayList from Firebase Storage?(如何将Firebase存储中的URL存储到ArrayList中?)
本文介绍了如何将Firebase存储中的URL存储到ArrayList中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试将所有URL的列表从Firebase存储获取到ArrayList中。我尝试使用getDownloadUrl()方法,但ArrayList仍然为空。这是我的代码-
public class LoggedIn extends AppCompatActivity {
RecyclerView recyclerView;
ArrayList<Uri> Url=new ArrayList<>();
StorageReference storageReference= FirebaseStorage.getInstance().getReference();
int in;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_logged_in);
Bundle extras=getIntent().getExtras();
String value = extras.getString("email");
for(in=1;in<6;in++){
storageReference.child(in+".png").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Url.add(in,uri);
Log.d("success",String.valueOf(uri));
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d("Failed",String.valueOf(e));
}
});
}
}}
推荐答案
我猜您在执行Url.add(in,uri)
之前正在使用Url
列表。
因为getDownloadUrl()
需要调用服务器,所以它是异步处理的。这意味着您的主代码继续运行,而应用程序在后台等待下载URL。然后,一旦下载URL可用,将使用该值调用您的onSuccess
。
我将在下面链接一些类似的问题,但需要记住的重要一点是,任何需要下载URL的代码都需要在onSuccess
中,或者从那里调用。
如果要等待所有下载URL可用,可以使用Tasks.whenAllSuccess
。
Task[] tasks = new Task[6];
for(in=1;in<6;in++){
Task task = storageReference.child(in+".png").getDownloadUrl();
tasks[i] = task;
task.addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
Url.add(in,uri);
Log.d("success",String.valueOf(uri));
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d("Failed",String.valueOf(e));
}
});
}
Tasks.whenAllSuccess(tasks).addOnSuccessListener(new OnSuccessListener<List<Uri>>() {
@Override
public void onSuccess(List<Uri> results) {
... you can use `resuls` or `Url` here
}
})
另请参阅:
- How to get download url for firebase storage and update firestore document?
- Can someone help me with logic of the firebase on success listener
- getContactsFromFirebase() method return an empty list
- Setting Singleton property value in Firebase Listener
- Firebase - Android - fetchProvidersForEmail - Why are all the calls asynchronous?
- How to deal with the values taken from asynchronous methods like onComplete?
这篇关于如何将Firebase存储中的URL存储到ArrayList中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
织梦狗教程
本文标题为:如何将Firebase存储中的URL存储到ArrayList中?


基础教程推荐
猜你喜欢
- iOS4 创建后台定时器 2022-01-01
- AdMob 广告未在模拟器中显示 2022-01-01
- Android:getLastKnownLocation(LocationManager.NETWORK_PROVIDER 2022-01-01
- libGDX 从精灵或纹理中获取像素颜色 2022-01-01
- NSString intValue 不能用于检索电话号码 2022-01-01
- iPhone - 获取给定地点/时区的当前日期和时间并将其与同一地点的另一个日期/时间进行比较的正确方法 2022-01-01
- 通过重定向链接在 Google Play 中打开应用 2022-01-01
- 如何从 logcat 中删除旧数据? 2022-01-01
- navigator.geolocation.getCurrentPosition 在 Android 浏览器上 2022-01-01
- Cocos2d iPhone 非矩形精灵触摸检测 2022-01-01