私は簡単なsqliteデータベースを使用するAndroid用Kotlinで簡単なメモアプリを開発しています。 私はすでにjavaで書いていますが、今はKotlinにいくつかの問題があります。特に、1行のコードがあります。
これはの作業です。リストビューでクリックするとノートIDを取得するJavaコードです。Kotlin android database:android.database.Cursorにjava.lang.Stringをキャストできません
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
}
Javaですべてスムーズであるため、Kotlinで、それは私にこのClassCastExceptionがエラーを与える理由を私は理解していません。
はまたあなたのListViewアダプタを投稿返すようにしたい場合はあなたの
fun getAllTitles(): ArrayList<String>
それはfun getAllTitles(): ArrayList<Cursor>
する必要があります。 – chandil03完了、あなたの意見では何が問題なのですか? – masc
'getItemAtPosition()'メソッドは問題の文字列を返します。 Javaで同じことを投稿して、それをより良く理解することはできますか? – chandil03