Reputation: 2959
I'm trying to retrieve some string from firebase and trying to show them as the entries of an AppCompatSpinner
.
Here's how I'm retrieving it:
vDatabase.child(key).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Map<String, String> newRequest = (Map<String, String>) dataSnapshot.getValue();
vName = newRequest.get("vName");
Toast.makeText(getBaseContext(), venueName, Toast.LENGTH_SHORT).show();
if (vName != null) {
ArrayList<String> spinnerArray = new ArrayList<>();
spinnerArray.add(vName);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
getBaseContext(), android.R.layout.simple_spinner_dropdown_item, spinnerArray);
venueSpinner.setAdapter(adapter);
} else {
Toast.makeText(getBaseContext(), "v == null", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
The problem is that above code is retrieving all the strings but showing only the last fetched string and not all of them.
What's wrong here and how can I show all the strings retrieved from the FirebaseDatabase
?
Upvotes: 0
Views: 47
Reputation: 507
Declare ArrayList spinnerArray = new ArrayList<>(); in your class not inside the onDatachange method
by keeping in onDatachange the variable is creating newly , so everytime new value is inserted in it ,so u are getting the last value to display.
Upvotes: 2