首页 > 解决方案 > 从 firebase 获取项目的名称

问题描述

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 显示它们。我怎么了?

标签: androidfirebasefirebase-storage

解决方案


似乎您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();
    }
});

此时,适配器将重新绘制关联的视图,并且您的数据应该会显示出来。


推荐阅读