美好的一天!
我在显示图像时遇到问题。
这是代码段:
final ArrayList<String> imgURLs = new ArrayList<>();
String userUid = FirebaseAuth.getInstance().getCurrentUser().getUid();
FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
DatabaseReference databaseReference = firebaseDatabase.getReference(userUid).child("WARDROBE");
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot snapshot : dataSnapshot.getChildren()){
imgURLs.add(snapshot.getValue().toString());
Toast.makeText(Profile.this, (String)snapshot.getValue(), Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
imgURLs.add("https://assets.academy.com/mgen/58/20083458.jpg?is=500,500");
imgURLs.add("https://assets.academy.com/mgen/61/20057861.jpg?is=500,500");
imgURLs.add("https://assets.academy.com/mgen/65/20082765.jpg?is=500,500");
imgURLs.add("https://ir0.mobify.com/project-burlington/1082/1922/https://cdn.burlingtoncoatfactory.com/FileLibrary/f4ee340d60f0421a8020b8ae05e6f36e/7854_SquareThumbnail.jpeg");
imgURLs.add("https://qph.fs.quoracdn.net/main-qimg-5d9f95691aca6affb53dcae7fbeba61f-c");
imgURLs.add("https://images.mattel.com/scene7//wcsstore/MattelCAS/05BUN14_Comfy_Space_PJs_and_Slippers_Girls_FMD28_FMD29_1?$ossmallindex$&storeId=10651&SKU=05BUN14");
我的问题出在onDataChange上。我的目标是显示保存在Firebase存储中的图像,但首先,我创建了一个带有子“图像”的Firebase数据库。它必须是所有https://的列表。
我首先创建了一个示例。我创建了带有子图像的样本。其中是我在Java代码中手动添加的网址-我是通过互联网获得的。在Toast视图中,显示的字符串与我在Java代码中手动添加的网址相同。问题在于它不显示Firebase中URL的图像,而仅显示手动添加的Java URL。
这是怎么发生的?
答案 0 :(得分:2)
好的,我有一个错误。
该解决方案依赖于onDataChange。因此,在活动打开之后,代码从上到下运行,并且假设执行了databaseReference,并且onDataChange仍然需要时间才能生效,直到发生更改为止。
因此,在我的代码的最底部,有setUpImageView()方法,它是在onDataChange完成之前首先执行的。结果,它不显示所需的图像:D