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中?
基础教程推荐
猜你喜欢
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01