android - 从 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 显示它们。我怎么了?
解决方案
似乎您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();
}
});
此时,适配器将重新绘制关联的视图,并且您的数据应该会显示出来。
推荐阅读
- scala - 在scala中读取多行作为输入
- spring-data-jdbc - 如何在 spring-data-jdbc 中指定表模式
- ios - 使用 rx 在 collectionView 中单击时如何获取我的单元格?
- c - 查找二维数组中每列的元素数
- alignment - 任何类型的大小总是会是其对齐的倍数吗?
- javascript - 使用 react-redux 成功提交表单后如何重定向
- java - 在 Android SQLite 中,我们是否也应该在 onCreate() 中添加新列?
- c# - 如何在 C# 中使用 Linq 方法语法检索具有相同外键 id 的多个列值?
- windows - 如何在实际打印机上打印文档时另存为 PDF
- image-processing - Richardson-Lucy 没有锐化图像