У меня есть приложение для викторины, и мне нужно реализовать метод, при котором при добавлении нового вопроса автоматически добавляется и обновляется новое поле в базе данных.Я хотел бы, чтобы он прочитал значение в дБ для него в первый раз, а затем увеличил его на +1 и сохранил в том же поле
Я новичок в kotlin android и не знаюкак именно все работает.Вот почему я жду некоторых предложений и объяснений, и я надеюсь, что я не прошу слишком многого.
Спасибо за ваше время и терпение!
МОЙ КОД:
private fun newQuestionCount() {
val countRef = FirebaseDatabase.getInstance().getReference("/$sessionId/count")
val arr = arrayListOf<Int>()
countRef.addValueEventListener(object: ValueEventListener{
override fun onDataChange(p0: DataSnapshot) {
if(p0.exists()){
val value = p0.getValue(QuestionCountClass::class.java)
if (value != null) {
arr.add(value.totalItems)
}
}
}
override fun onCancelled(p0: DatabaseError) {
}
})
addOne(arr.first())
}
private fun addOne(value: Int) {
val countRef = FirebaseDatabase.getInstance().getReference("/$sessionId/count")
val newVal = value + 1
countRef.setValue(newVal)
}
class QuestionCountClass( val totalItems: Int) {
constructor() : this(0)
}
Моя база данных
Сведения о сбое:
2019-09-20 21:06:23.056 19824-19824/com.x.quizapp E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.x.quizapp, PID: 19824
java.util.NoSuchElementException: List is empty.
at kotlin.collections.CollectionsKt___CollectionsKt.first(_Collections.kt:196)
at com.x.quizapp.MainActivity.newQuestionCount(MainActivity.kt:91)
at com.x.quizapp.MainActivity.newQuestion(MainActivity.kt:56)
at com.x.quizapp.MainActivity.access$newQuestion(MainActivity.kt:17)
at com.x.quizapp.MainActivity$onCreate$1.onClick(MainActivity.kt:27)
at android.view.View.performClick(View.java:6256)
at android.view.View$PerformClick.run(View.java:24701)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6541)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)