Reputation: 109
Below is the code that I am using to save value into firebase. It generates a random key for every value. (I want to save redundant data, so this method was necessary).
GenderOfNameHelperClass GONHC = new GenderOfNameHelperClass();
reference = FirebaseDatabase.getInstance().getReference().child("GenderOfName");
GONHC.setName(Name);
GONHC.setGender(Gender);
reference.push().setValue(GONHC);
This creates a structure as below:
db-ai-34201
-...GenderOfName
-...M4oLyB1ADGLWGJG4EgR
...gender:"Female"
...name: "akira"
Now how can I fetch the data from this. I want to fetch the gender, when name is searched from my android UI.
Upvotes: 0
Views: 97
Reputation: 4035
This is the listener to the GenderOfName node to extract data under the random keys:
ValueEventListener listener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot snapShot:dataSnapshot.getChildren() ){
//these are the values of gender and name for every random key
//in GenderOfName node
String gender = snapShot.child("gender").getValue(String.class);
String name = snapShot.child("name").getValue(String.class);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException(); // never ignore errors
}
};
Finally attach the listener to your reference of that node to start listening to it
reference = FirebaseDatabase.getInstance().getReference().child("GenderOfName");
reference.addValueEventListener(listener);
UPDATE
you can always use a query to filter results:
instead of this:
reference = FirebaseDatabase.getInstance().getReference().child("GenderOfName");
reference.addValueEventListener(listener);
try this,it will give you a specific snapshot based on the name you need:
Query query = FirebaseDatabase.getInstance().getReference().child("GenderOfName").orderByChild("name").equalTo(theNameYouWant);
query.addValueEventListener(listener);
Upvotes: 2