2017-11-03 82 views
1

進出口新的Android和火力地堡編程。我只是建立一個小應用程序,它迄今爲止工作得很好。但是當談到Firebase連接時,我正在掙扎。 我跟所有的基本步驟和嘗試了很多,但不可能弄明白。所以我的問題:我有一個數據庫,它存儲ID:ID - > 12345,23456,...,這些ID有多個孩子(其實ID - > 23456 - > 23456- ValueA,23456-ValueB,...)。我想這樣做:火力地堡的Android:檢索和檢查按鈕進入數據庫點擊

  1. 如果一個按鈕被點擊應用程序檢查先前輸入的字符串ID的孩子,所以如果enteredstring匹配任何IDX(例如用戶輸入ValueX(」 23456" ),它會檢查任何兒童歐佩克國際發展基金」是否等於23456)
  2. 如果是的話,應該檢查是否另一個以前輸入的字符串是該IDX的孩子(用戶進入VALUE年(‘88888’)檢查23456值-A(「88888 「)等於ValueY)。
  3. 如果這是真實的,它應該然後顯示值-B(「捉」)

我附數據庫作爲圖片的值。 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) 

回答

2
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檢查數據庫只有一次。

+0

感謝它的工作原理 – luc