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

Dhe*_*ani 2 android firebase firebase-realtime-database

在此处输入图片说明我有一个 Array List 中的键列表。我只想同时从这些键中检索数据。

      DatabaseReference mDBRef;

      List<String> keys = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)

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

            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) {

                    }
                });
            }
Run Code Online (Sandbox Code Playgroud)

Fra*_*len 5

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

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