Android se.getReference(tableName).orderByChild(childToBeOrdered) .addChildEventListener(新的ChildEventListener(){ @凌驾 公共void onChildAdded(DataSnapshot DataSnapshot,字符串prevChildKey){ ArrayList dadosMedico=新的ArrayList(); 对于(DataSnapshot快照:DataSnapshot.getChildren()){ 添加(snapshot.getValue().toString()); } handler.trataMedico(dadosMedico); } @凌驾 公共void onChildChanged(DataSnapshot DataSnapshot,字符串prevChildKey){ } @凌驾 ChildRemoved上的公共void(DataSnapshot DataSnapshot){ } @凌驾 已移动ChildMoved的公共void(DataSnapshot DataSnapshot,字符串prevChildKey){ } @凌驾 已取消的公共void(DatabaseError DatabaseError){ } }); } public void testQueryMethod(字符串专业,最终PhisicianHandler处理程序){ 最终字符串tableName=“CadastroMedico”; 最后一个字符串childToBeOrdered=“mEspecialidade”; DatabaseReference database=FirebaseDatabase.getInstance().getReference() .儿童(“尸体医生”); database.child(“mDoctorID”) .儿童(“mNome”) .儿童(“mEspecialidade”) .orderByChild(childToBeOrdered) .equalTo(专业); database.addChildEventListener(新的ChildEventListener(){ @凌驾 公共void onChildAdded(DataSnapshot DataSnapshot,字符串prevChildKey){ ArrayList dadosMedico=新的ArrayList(); 对于(DataSnapshot快照: dataSnapshot.getChildren(){ 添加(snapshot.getValue().toString()); System.out.println(snapshot.getValue().toString()); } handler.trataMedico(dadosMedico); } @凌驾 ChildChanged上的公共无效(DataSnapshot DataSnapshot, 字符串(子键){ } @凌驾 ChildRemoved上的公共void(DataSnapshot DataSnapshot){ } @凌驾 一旦ChildMoved(DataSnapshot DataSnapshot, 字符串(子键){ } @凌驾 已取消的公共void(DatabaseError DatabaseError){ } }); }
} 但这对我不起作用。当我试图在日志窗口中显示它时,我收到了这个消息:I/System.out:propertyValue:false,并且我没有从我的基础中获得任何值。我将添加一个图像,以便您可以看到我正在谈论的内容 我想做的是(以SQL为例):从CadastroMedico选择mDoctorID、mEmail、mEndereço*强> 我认为这是可能的,但我还不知道怎么做。我希望你能考虑一下。提前谢谢。试试这个Android se.getReference(tableName).orderByChild(childToBeOrdered) .addChildEventListener(新的ChildEventListener(){ @凌驾 公共void onChildAdded(DataSnapshot DataSnapshot,字符串prevChildKey){ ArrayList dadosMedico=新的ArrayList(); 对于(DataSnapshot快照:DataSnapshot.getChildren()){ 添加(snapshot.getValue().toString()); } handler.trataMedico(dadosMedico); } @凌驾 公共void onChildChanged(DataSnapshot DataSnapshot,字符串prevChildKey){ } @凌驾 ChildRemoved上的公共void(DataSnapshot DataSnapshot){ } @凌驾 已移动ChildMoved的公共void(DataSnapshot DataSnapshot,字符串prevChildKey){ } @凌驾 已取消的公共void(DatabaseError DatabaseError){ } }); } public void testQueryMethod(字符串专业,最终PhisicianHandler处理程序){ 最终字符串tableName=“CadastroMedico”; 最后一个字符串childToBeOrdered=“mEspecialidade”; DatabaseReference database=FirebaseDatabase.getInstance().getReference() .儿童(“尸体医生”); database.child(“mDoctorID”) .儿童(“mNome”) .儿童(“mEspecialidade”) .orderByChild(childToBeOrdered) .equalTo(专业); database.addChildEventListener(新的ChildEventListener(){ @凌驾 公共void onChildAdded(DataSnapshot DataSnapshot,字符串prevChildKey){ ArrayList dadosMedico=新的ArrayList(); 对于(DataSnapshot快照: dataSnapshot.getChildren(){ 添加(snapshot.getValue().toString()); System.out.println(snapshot.getValue().toString()); } handler.trataMedico(dadosMedico); } @凌驾 ChildChanged上的公共无效(DataSnapshot DataSnapshot, 字符串(子键){ } @凌驾 ChildRemoved上的公共void(DataSnapshot DataSnapshot){ } @凌驾 一旦ChildMoved(DataSnapshot DataSnapshot, 字符串(子键){ } @凌驾 已取消的公共void(DatabaseError DatabaseError){ } }); },android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,} 但这对我不起作用。当我试图在日志窗口中显示它时,我收到了这个消息:I/System.out:propertyValue:false,并且我没有从我的基础中获得任何值。我将添加一个图像,以便您可以看到我正在谈论的内容 我想做的是(以SQL为例):从CadastroMedico选择mDoctorID、mEmail、mEndereço* 我认为这是可能的,但我还不知道怎么做。我希望你能考虑一下。提前谢谢。试试这个 DatabaseReference mDatabase=FirebaseData
DatabaseReference mDatabase=FirebaseDatabase.getInstance().getReference().child("CadastroMedico");
mDatabase.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String prevChildKey) {
String doctorID=dataSnapshot.child("mDoctorId").getValue(String.class);
String mNome=dataSnapshot.child("mNome").getValue(String.class);
handler.trataMedico(dadosMedico);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String prevChildKey) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String prevChildKey) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
- 创建一个类并声明要从其中的firebase获取的所有变量。在您的情况下,它们将是mDoctorID、mNome和mEspecialidade
- 在class关键字之前添加
@ignoreextroperties
- 确保变量的名称与Firebase中节点的名称完全相同。它将如下所示:
@IgnoreExtraProperties class CadastroMedico{ public String mDoctorID="", mNome="", mEspecialidade=""; }
reference.addListenerForSingleValueEvent(new ValueEventListener(){ @Override public void onDataChange(DataSnapshot dataSnapshot) { List<CadastroMedico> dadosMedico = new ArrayList(); for (DataSnapshot snapshot : dataSnapshot.getChildren()){ CadastroMedico cadastroMedico = snapshot.getValue(CadastroMedico.class) dadosMedico.add(cadastroMedico); System.out.println(cadastroMedico.mDoctorID + " " + cadastroMedico.mNome + " " +cadastroMedico.mEspecialidade); } //modify your handler accordingly } @Override public void onCancelled(DatabaseError databaseError) { //handle error }});
- 现在调用firebase数据库查询,如果只想获取一次数据,请使用
。假设您只需要一次数据,因为SELECT查询也只返回一次数据,代码如下所示:addListenerForSingleValueEvent
@IgnoreExtraProperties class CadastroMedico{ public String mDoctorID="", mNome="", mEspecialidade=""; }
reference.addListenerForSingleValueEvent(new ValueEventListener(){ @Override public void onDataChange(DataSnapshot dataSnapshot) { List<CadastroMedico> dadosMedico = new ArrayList(); for (DataSnapshot snapshot : dataSnapshot.getChildren()){ CadastroMedico cadastroMedico = snapshot.getValue(CadastroMedico.class) dadosMedico.add(cadastroMedico); System.out.println(cadastroMedico.mDoctorID + " " + cadastroMedico.mNome + " " +cadastroMedico.mEspecialidade); } //modify your handler accordingly } @Override public void onCancelled(DatabaseError databaseError) { //handle error }});
reference.addListenerForSingleValueEvent(新的ValueEventListener()){ @凌驾 公共void onDataChange(DataSnapshot DataSnapshot){ List dadosMedico=new ArrayList(); 对于(DataSnapshot快照:DataSnapshot.getChildren()){ CadastroMedico CadastroMedico=snapshot.getValue(CadastroMedico.class) dadosMedico.add(cadastroMedico); System.out.println(cadastroMedico.mDoctorID+“”+cadastroMedico.mNome+“”+cadastroMedico.messpecialidade); } //相应地修改处理程序 } @凌驾 已取消的公共void(DatabaseError DatabaseError){ //处理错误 }});