У меня есть два метода, в одном я создаю новый элемент списка, во втором я обновляю текущий элемент списка.
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() }
Например, в Царстве есть метод copyToRealmOrUpdate
, который ищет field
и, если он находит его , обновляет , если нет, создает новую заметку . Как я могу сделать что-то подобное в firebase?
Я решил свою проблему следующим образом:
Когда я иду к фрагменту, я пропускаю guid
из списка всех элементов, и если он пуст, я добавляю, если нет, то обновляю.
button?.setOnClickListener {
if (arguments?.getString(KEY_TARGET_GUID, "").isNullOrEmpty()) addTarget()
else updateTarget()
}
Я не знаю, как это хорошее решение.