Java 如何从firebase android检索子数据

Java 如何从firebase android检索子数据,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我想检索name,regno的数据,该数据保存在profile节点中,并存储在列表中 rootref= database.getReference("Student"); rootref.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(@NonNull DataSnapshot dataSnapshot) { try { for (DataSnapshot ds

我想检索name,regno的数据,该数据保存在profile节点中,并存储在列表中

rootref= database.getReference("Student");

rootref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

  try {

  for (DataSnapshot ds : dataSnapshot.getChildren()) {

  //list.add(String.valueOf(ds.getValue()));

  // listKeys.add(ds.getKey());

  DatabaseReference rootrefprofile=FirebaseDatabase.getInstance().getReference().child("profile");


  rootrefprofile.addValueEventListener(new ValueEventListener() {
  @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

      Toast.makeText(Studentlist.this, "Exist profile", Toast.LENGTH_SHORT).show();
      Map<String ,Object> map=(Map<String, Object>) dataSnapshot.getValue();
      String name=map.get("name").toString();
      String number=map.get("number").toString();
      String regno=map.get("regno").toString();
      list.add("Name:"+name+ "\nNumber:" +number+"\nRegno:"+regno);
    }

  @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {

    }
  });


  listKeys.add(ds.getKey());
  // Toast.makeText(getContext(), "The Request List of teachers", Toast.LENGTH_SHORT).show();
}

listview.setAdapter(adapter);

  }
  catch (Exception e)
  {
    Toast.makeText(Studentlist.this, e+" Error", Toast.LENGTH_SHORT).show();
  }

}
rootref=database.getReference(“学生”);
rootref.addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
试一试{
对于(DataSnapshot ds:DataSnapshot.getChildren()){
//添加(String.valueOf(ds.getValue());
//add(ds.getKey());
DatabaseReference rootrefprofile=FirebaseDatabase.getInstance().getReference().child(“配置文件”);
rootrefprofile.addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
Toast.makeText(Studentlist.this,“Exist profile”,Toast.LENGTH_SHORT.show();
Map Map=(Map)dataSnapshot.getValue();
String name=map.get(“name”).toString();
String number=map.get(“number”).toString();
字符串regno=map.get(“regno”).toString();
列表。添加(“名称:“+Name+”\n编号:“+number+”\nRegno:“+regno”);
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
}
});
add(ds.getKey());
//Toast.makeText(getContext(),“教师请求列表”,Toast.LENGTH_SHORT.show();
}
setAdapter(适配器);
}
捕获(例外e)
{
Toast.makeText(Studentlist.this,e+“Error”,Toast.LENGTH_SHORT.show();
}
}
我无法从配置文件中检索数据如何从配置文件中检索数据。

这可能会对您有所帮助

rootref.child("profile").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
    try {
      for (DataSnapshot ds : dataSnapshot.getChildren()) {
        Toast.makeText(Studentlist.this, "Exist profile", Toast.LENGTH_SHORT).show();
        Map<String ,Object> map=(Map<String, Object>) ds.getValue();
        String name=map.get("name").toString();
        String number=map.get("number").toString();
        String regno=map.get("regno").toString();
        list.add("Name:"+name+ "\nNumber:" +number+"\nRegno:"+regno);

        listKeys.add(ds.getKey());
      }
      listview.setAdapter(adapter);
    }
    catch (Exception e)
    {
       Toast.makeText(Studentlist.this, e+" Error", Toast.LENGTH_SHORT).show();
    }
}
rootref.child(“profile”).addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
试一试{
对于(DataSnapshot ds:DataSnapshot.getChildren()){
Toast.makeText(Studentlist.this,“Exist profile”,Toast.LENGTH_SHORT.show();
Map Map=(Map)ds.getValue();
String name=map.get(“name”).toString();
String number=map.get(“number”).toString();
字符串regno=map.get(“regno”).toString();
列表。添加(“名称:“+Name+”\n编号:“+number+”\nRegno:“+regno”);
add(ds.getKey());
}
setAdapter(适配器);
}
捕获(例外e)
{
Toast.makeText(Studentlist.this,e+“Error”,Toast.LENGTH_SHORT.show();
}
}

不要在for loop中为profile添加ValueEventListener,您可以直接从根目录获取它

您可以添加数据库的结构吗?存储
数据的位置和
学生的位置
请将您的数据库结构添加为JSON文件或至少作为屏幕截图。还请使用@AlexMamoGood answer.B进行响应ut而不是
String name=map.get(“name”).toString();
,我要去掉
map
,使用
ds.child(“name”).getValue(String.class)