2016-11-24 40 views
0

根据数据库,我想问一个我想要搜索电子邮件的问题,但它无法处理收到的数据。我想收到一些有价值的电子邮件已经在数据库中或没有。在Firebase数据库中进行Android搜索

如何处理结果?这里是代码试试:

DatabaseReference reg = FirebaseReferenciak.reg; 
reg.orderByChild("email").equalTo("email", etEmail.getText().toString()).addListenerForSingleValueEvent(
    new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 
      Map<String, String> map = dataSnapshot.getValue(Map.class); 
      String value = map.get("name"); 
//Here is how do I check? 
      //String value = dataSnapshot.getValue(String.class); 
      dialog(value); 
     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 
      dialog("error"); 
     } 
    } 
); 

感谢您的帮助!

回答

0

当您针对Firebase数据库执行查询时,可能会有多个结果。所以快照包含了这些结果的列表。即使只有一个结果,快照也会包含一个结果列表。

出于这个原因,你需要遍历您在onDataChange()收到DataSnapshot的孩子:

public void onDataChange(DataSnapshot dataSnapshot) { 
    for (DataSnapshot childSnapshot: dataSnapshot.getChildren()) { 
     String value = childSnapshot.child("name").getValue(String.class); 
     dialog(value); 
    } 
}