在 Kotlin 中从 sqliteDB 填充 Spinner 数据

Populate Spinner Data from sqliteDB in Kotlin

我有一个本地数据库 (Sqlite),我试图从一列中获取所有数据并将其填充到片段内的 Spinner 中。我正在尝试从数据库中获取数据并将它们插入到数组中,这样就很容易了,你们能帮我吗?代码示例会很有帮助。我以某种方式做到了这一点,但它没有显示字符串值,而是显示参考值,如 "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()
                }
            }
//            }
}

重写您尝试放入适配器的模型 class 中的 toString 方法。

在您的 com.example.newsreader.model.PreferenceM 中,执​​行以下操作:

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