2017-11-03 3 views
1

AndroidとFirebaseプログラミングの新機能。私はちょうど小さなアプリを構築し、それは今まで正常に動作します。しかし、Firebaseの接続に関しては、私は苦労しています。 私は基本的なステップをすべて踏襲していましたが、それほど試してみましたが、それを理解できませんでした。Firebase android:ボタンクリック時のデータベースへのエントリの取得と確認

私の問題:私はデータベースを持っておりIDを格納します:ID-> 12345,23456、...これらのIDは複数の子を持っています(実際には他のID:ID-> 23456-> ValueA、23456-ValueB、...)。私は何をしたいと思います:

  1. をボタンがアプリのチェックをクリックすると、以前に入力した文字列は、IDの子である場合は「(例えば、ユーザがValueXに入るために(マッチIDxにのいずれかをenteredstring場合ので、
  2. もしそうならば、以前に入力された他の文字列がこのIDxの子であるかどうかをチェックする必要があります(ユーザーはValueY( "88888")を入力します)23456 Value-A( "88888 ")はValueYと等しい)。
  3. これが真である場合、それはその後、値-B(「猿」)の値を表示する必要があり

Iピクチャとしてデータベースに取り付けられています。あなたの助けのためのlink to the image

おかげで、本当にあなたがValueEventListenerにListenerForSingleValueEventを変更することができ、それを 乾杯

... 
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データベースを1回だけチェックします。

+0

ありがとうございます – luc