检索当前用户的子级数据:Firebase

时间:2019-06-24 08:29:21

标签: java android firebase firebase-realtime-database

在我们的应用中,我们必须检索当前用户下的日记的名称,并将其显示在ListView中。

我们提到了许多与我们类似的问题,但是没有一个是方便的。任何帮助,将不胜感激。预先感谢!

在图像所示的Firebase结构中:

  1. 一个用户可以有任意数量的日记(例如,此图片中的用户有3个 日记,即海得拉巴,迪拜和多伦多

  2. 在每本日记中,都有一些图片以及他们的经历 用户。

  3. 目标是仅获取正在考虑的用户的日记名称

这些日记的每一个下都有图片(我们可以将这些图片检索到listview中;在片段中显示一个单独的图片)

预期输出为-一个新的ListView,其中应填入日记名称-海得拉巴,金奈和班加罗尔image

image

1 个答案:

答案 0 :(得分:0)

根据您的最新评论,要在ListView中获取所有城市名称,请使用以下代码行:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("image").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        List<String> cities = new ArrayList<>();
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String cityName = ds.getKey();
            cities.add(cityName);
        }
        ListView listView = (ListView) findViewById(R.id.list_view);
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1, cities);
        listView.setAdapter(arrayAdapter);
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
uidRef.addListenerForSingleValueEvent(valueEventListener);

您的ListView中的结果将是:

Dubai
Hyderabad
Toronto