java - 在 firebase 数据库中获取字符串值的正确方法是什么

标签 java android firebase firebase-realtime-database

美好的一天!

我在显示图像时遇到问题。

这是代码 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/

相关文章:

java - Android 中未找到 WheelView

java - 从android中的第一个 View 获取持续时间

javascript - 如何从经过 Firebase 身份验证的用户那里获取提供商访问 token ?

java - 如何在聚类中生成唯一ID

takePersistableUriPermission() (SAF) 上的 java.lang.SecurityException

android - 为什么我不能在 ListView 之后放置 Adview?

java - 如何减少在 Android 上发布从服务器获取的数据的延迟?

ios - 用户注册期间,Firebase将镜像上传到存储

java - 使用 Java 反射实例化 Scala 类 `newInstance`

Android Studio 一直拒绝解析 com.android.support :appcompat-v7:29. 0.1