android - 使用多个键检索数据 Firebase 实时数据库

标签 android firebase firebase-realtime-database

enter image description here我有一个 Array List 中的 Keys 列表。我只想同时从这些键中检索数据。

      DatabaseReference mDBRef;

      List<String> keys = new ArrayList<>();

我用循环尝试了这个,但模型类中的结果重复了两次。

            for (int i= 0;i<keys.size();i++)
            {
                String id = keys.get(i);
                Log.d("Keys",id);
                mDBRef = FirebaseDatabase.getInstance().getReference().child("Gyms").child(id);


                mDBRef.addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(final DataSnapshot dataSnapshot) {

                        dataSnapshot.getKey();
                         gyms = dataSnapshot.getValue(Gyms.class);


                        if (gyms != null)
                        {
                            Log.d("Names",gyms.getName());

                            Toast.makeText(NearMeActivity.this, ""+ gyms.getName(), Toast.LENGTH_SHORT).show();

                        }
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });
            }

最佳答案

Firebase 实时数据库不支持基于值数组加载项目。您必须通过单独的调用来加载每个项目。

虽然这可能会使您的代码变得复杂,但它并不像大多数开发人员想象的那么慢。这是因为 Firebase 会通过管道传输请求。有关详细说明,请参阅我的回答:http://stackoverflow.com/questions/35931526/speed-up-fetching-posts-for-my-social-network-app-by-using-query-instead-of-obse/35932786#35932786

关于android - 使用多个键检索数据 Firebase 实时数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50063042/

相关文章:

android - 解析 sdk android 应用程序未在 5.0 中加载内容

firebase - 显示从Firestore中检索到的数组字段时出错

swift - 看不到崩溃问题

swift - 第一次无法使用 Firebase 观察监听器获取数据库项

javascript - firebase.database() 不是函数 - 新的 Firebase 项目

android - Android 上 PhoneGap 应用程序中的 native 日期/时间小部件

android - 如何为不同的 Activity 实现对话?

android - 如何将Android应用程序迁移到iOS(简单的方法?)

firebase - 使用 firebase-admin 时设置 FCM 高优先级

Firebase 实时数据库从控制台生成唯一 ID