2017-08-05 86 views
0

我试图从图中所示的数据库中读取数据。当只有一个孩子延伸时(餐馆小孩),我可以很好地读取数据。但是,当我添加了另一个孩子(评论)时,**所显示的代码无法再读取数据库,只是显示空白。餐厅类只包含getter和setter。有没有人有我的解决方案,让我只能从这段代码中读取“餐厅路径”? (我的其他代码这里没有显示会阅读评论道)从多个子路径的Firebase数据库读取数据

Data from firebase database here

public class Info extends Fragment { 

    private DatabaseReference mDatabase; 
    private FirebaseAuth firebaseAuth; 
    String userID; 

    private TextView resNameChange, statusChange; 

    public Info() { 
     // Required empty public constructor 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 

     View rootView = inflater.inflate(R.layout.fragment_info, container, false); 

     mDatabase = FirebaseDatabase.getInstance().getReference(); 

     firebaseAuth = FirebaseAuth.getInstance(); 
     FirebaseUser user = firebaseAuth.getCurrentUser(); 
     userID = user.getUid(); 

     resNameChange = rootView.findViewById(R.id.resNameChange); 
     statusChange = rootView.findViewById(R.id.statusChange); 

     mDatabase.addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       showData(dataSnapshot); 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 
     }); 
     return rootView; 
    } 

    public void showData(DataSnapshot dataSnapshot) { 
     for (DataSnapshot ds : dataSnapshot.getChildren()) { 
      RestaurantInformation resInfo = new RestaurantInformation(); 

//****** CODE THAT READS THE PATH AND GET THE DATA ******* 
      resInfo.setResName(ds.child(userID).getValue(RestaurantInformation.class).getResName()); 
      resInfo.setStatus(ds.child(userID).getValue(RestaurantInformation.class).getStatus()); 
//********************************************************** 

      resNameChange.setText(resInfo.getResName()); 
      statusChange.setText(resInfo.getStatus()); 
     } 
    } 

} 

回答

0

请使用下面的代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference restaurantsRef = rootRef.child("restaurants"); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     for(DataSnapshot ds : dataSnapshot.getChildren()) { 
      String resName = ds.child("resName").getValue(String.class); 
      String status = ds.child("status").getValue(String.class); 
      Log.d("TAG", resName + "/" + status); 
     } 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
restaurantsRef.addListenerForSingleValueEvent(eventListener); 

你的输出将是:

tbfgb/gfdbfbdf 
hello/there 
+0

HMM ..似乎没有工作@亚马逊Mamo – ben

+0

什么是错误? –

+0

没关系,我没有试图用这段代码读取数据库,而是改变了我的数据库的结构以便更容易阅读。无论如何感谢您的帮助。 – ben