SQLite помогите исправить

Рейтинг: -2Ответов: 1Опубликовано: 19.03.2023

взял образец отсюда

MainCtivity

fun viewRecord(view: View){
    //creating the instance of DatabaseHandler class
    val databaseHandler: DatabaseHandler= DatabaseHandler(this)
    //calling the viewEmployee method of DatabaseHandler class to read the records
    val emp: List<String> = databaseHandler.viewEmployee()
    val empArrayId = Array(emp.size){0}
    val empArrayName = Array(emp.size){"null"}
    val empArrayEmail = Array(emp.size){"null"}
    println(arrayOf(emp[0]))
    var index = 0
    for(e in emp){
        empArrayId[index] = e.userId.toString()   // не может найти userId
        empArrayName[index] = e.userName          // не может найти userName
        empArrayEmail[index] = e.userEmail        // не может найти userEmail 
        index++
    }
    //creating custom ArrayAdapter
    val myListAdapter = MyListAdapter(this,empArrayId,empArrayName,empArrayEmail)
    binding.listView.adapter = myListAdapter

DatabaseHandler

fun viewEmployee(): List<String>{
    val empList:ArrayList<String> = ArrayList<String>()
    val selectQuery = "SELECT  * FROM $TABLE_CONTACTS"
    val db = this.readableDatabase
    var cursor: Cursor? = null
    try{
        cursor = db.rawQuery(selectQuery, null)
    }catch(e: SQLiteException) {
        db.execSQL(selectQuery)
        return ArrayList()
    }
    var userId: Int
    var userName: String
    var userEmail: String
    if(cursor.moveToFirst()) {
        do {
            userId = cursor.getInt(cursor.getColumnIndexOrThrow("id"))
            userName = cursor.getString(cursor.getColumnIndexOrThrow("name"))
            userEmail = cursor.getString(cursor.getColumnIndexOrThrow("email"))
            val emp= EmpModelClass(userId = userId, userName = userName, userEmail = userEmail)
            empList.add(emp.toString())
        } while(cursor.moveToNext())
    }
    return empList
}
}

EmpModelClass

class EmpModelClass(var userId: Int, val userName:String , val userEmail: String)

Проблема в этом: введите сюда описание изображения

Что мне поменять чтобы отобразить БД?

Ответы

▲ 0Принят

Вы зачем-то преобразуете ваш класс в строку. Это, кажется, вам не нужно. Замените

val empList:ArrayList<String> = ArrayList<String>() на val empList:ArrayList<EmpModelClass> = ArrayList<EmpModelClass>() и , соответстенно, empList.add(emp.toString()) на empList.add(emp)