As title, how to get data from firebase and show in android studio?
Currently, because I don\'t know how to use spinner, so I put the id eventSpinner in XML fil
I want to show all the registerEventName (Google) of all the eventid (1111,2222,3333....) in the spinner.
To get all event objects where registerEventName property is equal to Google, please use the following query:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query query = rootRef
.child("ListOfEvents")
.child(uid)
.orderByChild("registerEventName")
.equalsTo("Google");
query.addListenerForSingleValueEvent(/* ... */);
Edit:
According to your comment, if you want to display all event names into a spinner, please use the following lines of code:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference uidRef = rootRef.child("ListOfEvents").child(uid);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<String> eventList = new ArrayList<String>();
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String registerEventName = ds.child("registerEventName").getValue(String.class);
eventList.add(registerEventName);
}
Spinner spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_item, eventList);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
}
};
uidRef.addListenerForSingleValueEvent(valueEventListener);
I believe all you are looking for is a way to get a list of all titles So what you do is you get the values and store them in an arraylist.
Then Using an adapter put them in a spinner.
So here is a code which will fetch all of them as a list form firebase:
In your onDataChange() Implement something like this.
//Then pass the list to a method to update the spinner where you use a spinner adapter.
@Override
public void onDataChange(DataSnapshot snapshot) {
if (snapshot != null) {
List<String> titles= = new ArrayList<>();
for ( DataSnapshot snapshot1:snapshot.getChildren()){
MyEvents allocation = snapshot1.getValue(MyEvent.class);
// Hope you have a class called Representing the objects I called mine myEvents
//Put it in the List
titles.add(allocation.getTitle());
}
}
}