有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

在我们的应用程序中,我们必须检索当前用户下的日志名称,并将它们显示在ListView

我们提到了许多与我们的问题类似的问题,但没有一个能派上用场。任何帮助都将不胜感激。提前谢谢

在图中所示的Firebase结构中:

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

  2. 在每一本日记下面,都有一些图片,以及你的经历 用户

  3. 目的是只获取考虑中用户的日记名

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

预期的输出是一个新的ListView,应该用日记名填充——海得拉巴、钦奈和班加罗尔image

image


共 (1) 个答案

  1. # 1 楼答案

    根据您最后的评论,要获取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