2017-06-14 5 views
0

Ich möchte die Daten in Firebase, die medizinische = "Diabetes" ist, die durch den Benutzer einlesen. Wenn dieser Benutzer die Krankengeschichte von Diabetes hat, wird etwas anzeigen, nicht zulassen, dass der Benutzer kaufen. Jeder kann mir beibringen, wie man diese Bedingung im Android Studio schreibt?Wie vergleicht man Daten in Firebase?

Firebase data structure

public class Pain_and_Fever extends AppCompatActivity implements View.OnClickListener{ 

private Button btnSubmit, btnCancel; 
private String userID; 
Query query; 


//add Firebase Database stuff 
private FirebaseDatabase mFirebaseDatabase; 
private FirebaseAuth mAuth; 
private FirebaseAuth.AuthStateListener mAuthListener; 
private DatabaseReference myRef; 

@Override 
protected void onCreate(@Nullable final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_pain_and__fever); 
    btnSubmit = (Button) findViewById(R.id.bttnsubmit); 
    btnCancel = (Button) findViewById(R.id.bttncancel); 


    //declare the database reference object. This is what we use to access the database. 
    //NOTE: Unless you are signed in, this will not be useable. 
    mAuth = FirebaseAuth.getInstance(); 
    mFirebaseDatabase = FirebaseDatabase.getInstance(); 
    final FirebaseUser user = mAuth.getCurrentUser(); 
    userID = user.getUid(); 
    myRef = mFirebaseDatabase.getReference(); 

    btnSubmit.setOnClickListener(this); 
    btnCancel.setOnClickListener(this); 

    query = myRef.orderByChild("medical").equalTo("Diabetes"); 

} 

    private void submit(){ 
     query.addListenerForSingleValueEvent(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       if(dataSnapshot.exists()){ 

        for (DataSnapshot issue : dataSnapshot.getChildren()){ 
         UserInformation uInfo = issue.getValue(UserInformation.class); 
         if (uInfo.getMedical().equals("Diabetes")){ 
          startActivity(new Intent(getApplicationContext(),Medicine.class)); 

         }else{ 
          myRef.child("Medicines").child("Pain and Fever").child(userID).setValue("Acetaminophen"); 
          startActivity(new Intent(getApplicationContext(),Medicine.class)); 
         } 
        } 
       } 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 
     }); 

     } 


    @Override 
    public void onClick(View view) { 
     if (view == btnSubmit){ 
      submit(); 
     } 
     if (view == btnCancel){ 
      startActivity(new Intent(this,Medicine.class)); 
     } 
    } 


} 
+0

Verwendung Abfrage für diesen –

+0

Abfrage query = reference.child ("Benutzer") orderByChild ("id"). Verwenden Sie das? – Bleach

+0

sehen Sie meine Antwort und ändern Sie es nach Ihrer Anforderung –

Antwort

1

auf diese Weise versuchen, das funktioniert für mich

Query chatRoomsQuery = mFirebaseDatabase.orderByChild("medical").equalTo("your value"); 


         chatRoomsQuery.addListenerForSingleValueEvent(new ValueEventListener() { 
          @Override 
          public void onDataChange(DataSnapshot dataSnapshot) { 
           if (dataSnapshot.exists()) { 
            // dataSnapshot is the "issue" node with all children with id 0 

            search_list=new ArrayList<SearchModel>(); 
            for (DataSnapshot issue : dataSnapshot.getChildren()) { 
             // do something with the individual "issues" 
             UserRegisterModel mModel = issue.getValue(UserRegisterModel.class); 
             if(mModel.getArea().equals(sel_area)) 

            hidepDialog(); 

           } 
          } 

          @Override 
          public void onCancelled(DatabaseError databaseError) { 

          } 
         }); 

        }