我是Android和Firebase编程的新手。我只是建立一个小应用程序,它到目前为止工作正常。但是当谈到Firebase连接时,我正在努力。 我遵循了所有基本步骤,尝试了很多,但无法弄明白。
所以我的问题:我有一个数据库,它存储ID:ID - > 12345,23458,...,这些ID有多个子级(实际上是其他ID:ID - > 23456 - > 23456-ValueA,23456-ValueB,...)。我想做什么:
我将数据库附加为图片。link to the image
感谢您的帮助,非常感谢 干杯
...
public class trackid extends AppCompatActivity {
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference IDRef = rootRef.child("ID");
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_trackid);
// findViewById
Button ButtondisplayB = (Button) findViewById(R.id.ButtondisplayB);
EditText ValueX = (EditText) findViewById(R.id.ValueX);
EditText ValueY = (EditText) findViewById(R.id.ValueY);
// Capture if button is clicked
ButtondisplayB.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// HERES WHERE MY QUESTIONS START:
// if ValueX.getText().toString() is in IDRef.child()
//if true: ValueY.getText().toString() equals IDRef.child(ValueX).child(Value-A)
//if true: display IDRef.child(Value-B)
答案 0 :(得分:1)
IDRef.child(ValueX.getText().toString())addListenerForSingleValueEvent(new com.google.firebase.database.ValueEventListener() {
@Override
public void onDataChange(com.google.firebase.database.DataSnapshot dataSnapshot) {
if(!dataSnapshot.exists()){
Log.d("Missing","This id is not present in the database");
}else{
String aFromDb = dataSnapshot.child("A-value").getValue(String.class);
if(ValueY.getText().toString.equals(aFromDb)){
String bFromDb = dataSnapshot.child("B-value").getValue(String.class);
Log.d("B value is:",bFromDb)''
}else{
Log.d("not equal","A value not equal to ValueY");
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.d("Error",".....");
}
});
您可以将ListenerForSingleValueEvent更改为ValueEventListener。 ListenerForSingleValueEvent只检查一次数据库。