【发布时间】:2019-03-21 15:33:12
【问题描述】:
我有两种方法,一种是创建一个新的列表项,另一种是更新当前的列表项。
private fun addTarget() {
val name = nameEditText?.text.toString().trim()
val description = descriptionEditText?.text.toString().trim()
if (!TextUtils.isEmpty(name)) {
val id: String = databaseReference?.push()?.key.toString()
val target = Target(guid = id, name = name, description = description)
databaseReference?.child(id)?.setValue(target)
} else Log.d("some", "Enter a name")
}
private fun updateTarget() {
val name = nameEditText?.text.toString().trim()
val description = descriptionEditText?.text.toString().trim()
val map = mapOf("name" to name, "description" to description)
databaseReference?.child(arguments?.getString(KEY_TARGET_GUID, "") ?: "")?.updateChildren(map)
}
我需要把这两个概念分清楚,所以条件有问题。
button?.setOnClickListener { if (condition?????) addTarget() else updateTarget() }
例如,在 Realm 中有一个方法 copyToRealmOrUpdate 查找 field,如果找到它更新,如果没有,则 创建一个新笔记。我怎样才能在 Firebase 中做这样的事情?
接下来我解决了我的问题:
当我转到片段时,我从所有元素的列表中传递guid,如果它为空,则添加,如果不是则更新。
button?.setOnClickListener {
if (arguments?.getString(KEY_TARGET_GUID, "").isNullOrEmpty()) addTarget()
else updateTarget()
}
我不知道这是一个好的解决方案。
【问题讨论】:
标签: android firebase firebase-realtime-database kotlin