android - 删除子集合 Firebase 中的文档 | 科特林
问题描述
我构建了具有通知列表的应用程序,并尝试允许用户使用以下代码删除子集合中的特定文档。但它会删除子集合中的所有文档,然后应用程序崩溃了!!!
....
itemView.setOnClickListener {
getDocumentId()
}
}
private fun getDocumentId() {
db.collection("users").document(auth.currentUser?.email!!)
.collection("notification").addSnapshotListener { snapshot, e ->
if (e != null) {
Log.w(ContentValues.TAG, "Listen Failed", e)
return@addSnapshotListener
}
if (snapshot != null) {
val documents = snapshot.documents
delete(documents[position].id)
}
}
}
private fun delete(docNotificationID: String) {
db.collection("users").document(auth.currentUser?.email!!)
.collection("notification").document(docNotificationID)
.delete()
}
}
...
解决方案
Process: com.qalamp.eqalamschool, PID: 12506
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.get(ArrayList.java:437)
at com.qalamp.eqalamschool.cloudMessaging.NotificationsAdapter$NotificationsItem.getDocumentId$lambda-1(NotificationsAdapter.kt:55)
at com.qalamp.eqalamschool.cloudMessaging.NotificationsAdapter$NotificationsItem.lambda$vNXlPl5asSXhSQAmF9DARy_I1m0(Unknown Source:0)
at com.qalamp.eqalamschool.cloudMessaging.-$$Lambda$NotificationsAdapter$NotificationsItem$vNXlPl5asSXhSQAmF9DARy_I1m0.onEvent(Unknown Source:4)
at com.google.firebase.firestore.Query.lambda$addSnapshotListenerInternal$2$Query(Query.java:1133)
at com.google.firebase.firestore.-$$Lambda$Query$JWhMgzcsIac1Z-exZj1pTDRisJg.onEvent(Unknown Source:6)
at com.google.firebase.firestore.core.AsyncEventListener.lambda$onEvent$0$AsyncEventListener(AsyncEventListener.java:42)
at com.google.firebase.firestore.core.-$$Lambda$AsyncEventListener$DNkggu2LY54oguDvcp-QtRg6Sfg.run(Unknown Source:6)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at com.google.android.gms.internal.tasks.zzb.dispatchMessage(com.google.android.gms:play-services-tasks@@17.1.0:6)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7356)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
推荐阅读
- rest - 在openbmc中,xyz路径和/redfish/v1路径有什么区别
- android - Android webview recaptcha 挑战
- reactjs - react-csv 下载一个没有扩展名的文件
- html - 是否有 XPath 表达式来获取嵌套在脚本标记中的值
- html - 如何减少引导行内 div 的上边距
- makefile - 如何使用llvm生成的汇编语言打开stm32板上的LED?
- flutter - 颤动的 ListView.builder 有时会显示空白或空数据
- kubernetes - Kubernetes集群内的速率限制
- javascript - 尝试对其执行测试时,内置 Number 对象的覆盖方法失败
- javascript - 以角度将 api 集成到导航选项卡