美好的一天!
我在显示图像时遇到问题。
这是代码 fragment :
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 代码中手动添加的 url - 我通过互联网获得的。在 Toast View 中显示的字符串与我在 java 代码中手动添加的 url 相同。问题是它不显示 firebase 中 URL 中的图像,它只显示手动添加的 java url。
是什么导致了这种情况发生?
最佳答案
好吧,我错了。
解决方案依赖于onDataChange。因此,在 Activity 打开后,代码会从上到下运行,假设执行了 databaseReference,而 onDataChange 仍然需要一段时间才能生效,直到有更改为止。
所以在我的代码的最底部有 setUpImageView() 方法,它在 onDataChange 完成之前首先执行。结果,它没有按需要显示图像:D
关于java - 在 firebase 数据库中获取字符串值的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51790870/