Получение названий предметов из firebase - PullRequest
0 голосов
/ 07 мая 2020
FirebaseStorage storage;
StorageReference downloadRef;
StorageReference listRef;
Object Downloads;
ArrayList<String> arrayList;
ArrayAdapter arrayAdapter;
ListView listView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    listView = findViewById(R.id.listView);
    arrayList = new ArrayList<>();

    listRef = storage.getInstance().getReference("Project");
    listRef.listAll().addOnSuccessListener(new OnSuccessListener<ListResult>() {
        @Override
        public void onSuccess(ListResult listResult) {
            for (StorageReference items : listResult.getItems()) {
                arrayList.add(items.getName());
            }
        }
    });

    arrayAdapter = new ArrayAdapter(MainActivity.this, android.R.layout.simple_list_item_1, arrayList);
    listView.setAdapter(arrayAdapter);

}

Итак, я новичок в android, и именно это я пытался получить имена документов, чтобы я мог отображать их с помощью listView. Что я ошибаюсь?

1 Ответ

0 голосов
/ 07 мая 2020

Кажется, что ваш onSuccess получает вызов, что означает, что вы получаете список файлов из Firebase.

Скорее всего, вы обрабатываете этот список правильно, но затем не сообщаете адаптер, что вы изменили его данные. Чтобы сообщить адаптеру, что его данные изменились, вызовите на нем notifyDataSetChanged:

listRef.listAll().addOnSuccessListener(new OnSuccessListener<ListResult>() {
    @Override
    public void onSuccess(ListResult listResult) {
        for (StorageReference items : listResult.getItems()) {
            arrayList.add(items.getName());
        }
        arrayAdapter.notifyDataSetChanged();
    }
});

В этот момент адаптер перерисовывает связанные представления, и ваши данные должны появиться.

...