Мы работали над этим кодом, чтобы перехватить сообщение об ошибке, введенное в поле «Редактировать текст»Когда значение введено правильно, нам сообщают, что введенное значение не соответствуетНО, если мы выберем значение из списка просмотра рециркулятора и заполним поле «Редактировать текст» значением, которое будет показано при поиске
Вот код для поиска в DBHelper
fun getOneName(id: Int): Contact? {
val db = this.writableDatabase
val selectQuery = "SELECT * FROM $TABLE_NAME WHERE $colId = ?"
db.rawQuery(selectQuery, arrayOf(id.toString())).use { // .use requires API 16
if (it.moveToFirst()) {
val result = Contact(id = 0,name ="")
result.id = it.getInt(it.getColumnIndex(colId))
result.name = it.getString(it.getColumnIndex(colName))
return result
}
}
return null
}
Мы использовали это для класса модели, впервые используя класс данных как простой класс
data class Contact (
var id: Int,
var name: String
)
А вот нажатие кнопки, которая управляет поиском
btnGetID.setOnClickListener {
if(etPerson.text.toString().trim().isNullOrEmpty()){
message("Enter Contact Name")
return@setOnClickListener
}
var numeric = true
var string = etPerson.text.toString().trim()
numeric = string.matches(".*\\d+.*".toRegex())
if(numeric){
message("No NUMBERS")
return@setOnClickListener
}
val dbManager = DBHelper(this)
var name = etPerson.text.toString()
//val contact = dbManager.getOneName(name)
val contact = dbManager.getOneName(id.toInt())
if(contact?.name.equals(name)){
println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! contact ID= "+contact)
etPerson.setText("The contact name is $name the ID is "+contact?.id.toString())
}else{
etPerson.setText("Name NOT = to $name and the ID is "+contact?.id.toString())
}
}
Мы знаем, что имя Sally находится в БД, если мы введем Sally в операторе else, которое будет отображать Имя NOT = blaЕсли мы выберем Салли из списка Recyclerview, первое утверждение покажет Имя контакта bla blaKotlin 1.2.71 API 27
Наш вопрос заключается в том, почему имя, набранное вручную, не работает, если оно совпадает?
ЗДЕСЬ ПРАВИЛЬНЫЙ КОД ДЛЯ DBHelper
fun getOneName(name: String): Contact? {
val db = this.writableDatabase
val selectQuery = "SELECT * FROM $TABLE_NAME WHERE $colName = ?"
db.rawQuery(selectQuery, arrayOf(name)).use { // .use requires API 16
if (it.moveToFirst()) {
val result = Contact(id = 0,name ="")
result.id = it.getInt(it.getColumnIndex(colId))
result.name = it.getString(it.getColumnIndex(colName))
return result
}
}
return null
}