如何比较firebase中的数据?

时间:2017-06-14 05:05:39

标签: android firebase firebase-realtime-database

我想回读Firebase中的数据,这是医疗="糖尿病"哪个用户输入密钥。如果这个用户有糖尿病病史会显示不允许用户购买的东西。任何人都可以教我如何在android studio中写出这个条件?

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));
        }
    }


}

1 个答案:

答案 0 :(得分:1)

试试这种方式,这对我有用

 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) {

                            }
                        });

                    }