【发布时间】:2021-03-22 09:49:19
【问题描述】:
我是 android 开发的新手,并尝试使用 firebase 制作应用程序。我使用个人资料照片进行注册,并将照片名称推送到数据库中。并归档到 FireStore。在底部代码mImageUrls.add(uri.toString()); 行不起作用。但它在 OnSuccess() 中烤面包,只是我无法将数据添加到数组中。我也像其他数组一样在 OnCreateView(final ArrayList<String> mImageUrls = new ArrayList<>();) 中初始化了 Array。我需要你的帮助。
lv = (ListView) rootview.findViewById(R.id.lv_main);
final ArrayAdapter adapter = new MyAdapter(getActivity(), name_list,date,imgs);
myref = FirebaseDatabase.getInstance().getReference().child("MusiciansNonSensitive");
final ArrayList<String> mImageUrls = new ArrayList<>();
final StorageReference storageReference = FirebaseStorage.getInstance().getReference();
myref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
for (DataSnapshot postSnapshot: snapshot.getChildren()) {
String name_value = postSnapshot.child("name").getValue().toString();
String province_value = postSnapshot.child("province").getValue().toString();
final String url_path = postSnapshot.child("photourl").getValue().toString();
StorageReference photo_url = storageReference.child("uploads/"+url_path);
photo_url.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
mImageUrls.add(uri.toString()); // I tried to add Log.d and it adds value every for loop, but after loop it being empty array again.
}
});
//mImageUrls.add("A");
name_list.add(name_value);
date.add(province_value);
}
Log.d("LOGGOGOGOOG",mImageUrls.toString()); // Here being empty
//Toast.makeText(getContext(),list.toString(),Toast.LENGTH_LONG).show();
lv.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
【问题讨论】:
-
在 Stack Overflow 上,请不要显示文字和代码的图片。将文本复制到问题本身并设置格式,以便于阅读、复制和搜索。您可以使用底部的编辑链接编辑问题以更正此问题。
-
感谢您的技巧。我只是在这里添加了代码。
标签: java android firebase-realtime-database firebase-storage