Заполните данные Spinner из sqliteDB в Kotlin - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть локальная база данных (Sqlite), в которой я пытаюсь получить все данные из одного столбца и вставить их в Spinner внутри фрагмента. Я пытаюсь получить данные из базы данных и вставить их в массив, чтобы было легко. Не могли бы вы, ребята, помочь мне с этим? Пример кода будет очень полезным. Я как-то сделал это, но он не показывает значение String, а вместо этого показывает ссылочное значение, например "com.example.newsreader.model. PreferenceM@366732f" ... Я не знаю, как преобразовать это в читаемую строку.

Соответствующий фрагмент кода

private fun preferencesInit(){
    //load the preferences list
    val prefList =   dbHandler.getAllPrefernces(activity!!.applicationContext)
    val spinner = spinner_preferences

    val preferences = prefList.toTypedArray()//arrayOfNulls<String>(prefList.size)
//        prefList.toArray()

    val arrayAdapter = ArrayAdapter(activity!!.applicationContext, android.R.layout.simple_spinner_dropdown_item, preferences)
    spinner.adapter = arrayAdapter
//        spinner.setOnClickListener {
            spinner.onItemSelectedListener = object :    AdapterView.OnItemSelectedListener {
                override fun onItemSelected(
                    parent: AdapterView<*>,
                    view: View,
                    position: Int,
                    id: Long
                ) {
                    if (preferences.isEmpty() || preferences.size == 0){
                        //do nothing
                    }else{
                        Toast.makeText(
                            activity!!.applicationContext,"preference selected : " +  preferences[position],Toast.LENGTH_SHORT).show()
                        checkQueryText(preferences[position].toString())
                    }
                }
                override fun onNothingSelected(parent: AdapterView<*>) {
                    // Code to perform some action when nothing is selected
                    queryTopHeadlines()
                }
            }
//            }
}

1 Ответ

1 голос
/ 28 февраля 2020

Переопределите метод toString в классе модели, который вы пытаетесь вставить в свой адаптер.

В вашем com.example.newsreader.model.PreferenceM выполните следующее:

override fun toString(): String{
  return <the field you want to put in your adapter>
}
...