выше - мое дерево узлов Firebase.
вот мой код:
private fun attemptAdd(){
var focus: View? = null
var cancel: Boolean = false
var prefix: String = prePrefView.text.toString() + prefText.text.toString()
var sp: SimPrefix
//checks for the length of the input
if(prefText.length()<2){
prefText.error = "invalid length"
cancel = true
focus = prefText
}
mDatabaseReference.child("simnumbers")
.orderByChild("simPref")
.equalTo(prefix)
.addListenerForSingleValueEvent(object : ValueEventListener{
override fun onDataChange(dataSnapshot: DataSnapshot) {
dataSnapshot.children.forEach {
sp = it.getValue(SimPrefix::class.java)!!
if(sp.simCard.equals(prefix)){ //checks if there is already a node with the same data
prefText.error = "already exists"
cancel = true
focus = prefText
}
}
}
override fun onCancelled(p0: DatabaseError?) {
}
})
if(cancel){
focus?.requestFocus()
}
else{ //if all is valid, proceed to the next method.
addPrefix()
}
}
То, что я предполагаю здесь, - то, что это, кажется, не вводит слушателя, так как это всегда
переходит к следующему способу, позволяющему пользователю вводить те же существующие данные.