0

Я пытаюсь извлечь некоторую строку из firebase и попытаться показать их как записи AppCompatSpinner.Невозможно показать все строки, полученные из базы данных FirebaseDatabase

Вот как я его вызова:

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

    } 
}); 

Проблема заключается в том, что выше кода извлечения всех строк, но показывает только последнюю строку сгружен и не все из них.

Что здесь не так и как показать все строки, извлеченные из FirebaseDatabase?

ответ

2

Объявление ArrayList spinnerArray = новый ArrayList <>(); в вашем классе не внутри метода onDatachange

путем сохранения в onDatachange переменная создается заново, поэтому каждое новое значение вставляется в нее, поэтому вы получаете последнее значение для отображения.

+0

cool ... но после вашего ответа appcompatspinner отображается пустым, и когда я нажимаю на него, записи отображаются, но когда я выбираю один, он снова исчезает! –