【发布时间】:2021-03-16 23:08:17
【问题描述】:
我需要按创建时间对 firebase 文件夹中的项目进行排序。创建时间在项目的元数据中。
我已经能够做到,但我觉得有更好的方法来使用监听器和“任务”实用程序类来完成它。
我尝试关注this guide,但我的用例更复杂
getMedatada 文档:https://firebase.google.com/docs/reference/android/com/google/firebase/storage/StorageReference#getMetadata()
getCreationTimeMillis 文档:https://firebase.google.com/docs/reference/android/com/google/firebase/storage/StorageMetadata#getCreationTimeMillis()
这是我的代码:
FirebaseStorage.getInstance().reference.child(category).listAll().addOnSuccessListener {
val listOfTalks = mutableListOf<Task<StorageMetadata>>()
val items = it.items
items.forEach { listOfTalks.add(it.metadata) } // collecting the list of task for getting the metadata
val metadataTasks = Tasks.whenAllComplete(listOfTalks)
// wait fore all the metadata
metadataTasks.addOnSuccessListener {
// put them in a helper class and sort
val sortedBy = it.map {
val storageMetadata = it.result as StorageMetadata
ReferenceAndTimeForSorting(
storageMetadata.reference!!,
storageMetadata.creationTimeMillis
)
}.sortedByDescending { it.timestamp }
// keep al the references int the result
storageReferenceList.addAll(sortedBy.map { it.reference })
}
metadataTasks.addOnFailureListener {
// if there is an error getting the metadata, keep the default sorting
storageReferenceList.addAll(items)
}
}
【问题讨论】:
-
Firebase STORAGE 没有此功能@AlexMamo
标签: firebase sorting kotlin task storage