Kotlin android数据库:不能将java.lang.String强制转换为android.database.Cursor

我正在开发一个简单的笔记应用程序在Android的Kotlin使用一个简单的SQLite数据库。 我已经用java编写了它,但是现在我在Kotlin中遇到了一些问题,特别是在一行代码中。

这是工作的 java代码,当我在列表视图上点击它时,我会记下这个ID。

itemCursor = (Cursor) activity.listView.getItemAtPosition(position); noteID = itemCursor.getInt(itemCursor.getColumnIndex(DBHelper.NOTES_COLUMN_ID)); itemCursor = helper.getNote(noteID); 

那么这应该是Kotlin代码:

 var itemCursor: Cursor = activity.listView.getItemAtPosition(position) as Cursor **(error here on this line, look below for it)** var noteID: Int = itemCursor.getInt(itemCursor.getColumnIndex(COLUMN_ID)) itemCursor = helper.getNote(noteID) 

java.lang.ClassCastException:java.lang.String不能转换为android.database.Cursor

ListView适配器:

 list_titles = helper.getAllTitles() lv_adapter = ArrayAdapter(activity, android.R.layout.simple_list_item_1, list_titles) v.listview.adapter = lv_adapter 

getAllTitles好玩:

 fun getAllTitles(): ArrayList<String> { val db = this.readableDatabase var titles = ArrayList<String>() db.select(TABLE_NAME).parseList(object : MapRowParser<List<String>> { override fun parseRow(columns: Map<String, Any?>): ArrayList<String> { val obj = columns.getValue(COLUMN_OBJ).toString() titles.add(obj) return titles } }) return titles } 

我不明白为什么在Kotlin它给了我这个ClassCastException错误,因为在Java中是平稳的。

你的fun getAllTitles(): ArrayList<String>它应该很fun getAllTitles(): ArrayList<Cursor>如果你想让getItemAtPosition()返回一个Cursor