2017-08-29 16 views
0

私は簡単な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がエラーを与える理由を私は理解していません。

+0

はまたあなたのListViewアダプタを投稿返すようにしたい場合はあなたのfun getAllTitles(): ArrayList<String>それはfun getAllTitles(): ArrayList<Cursor>する必要があります。 – chandil03

+0

完了、あなたの意見では何が問題なのですか? – masc

+0

'getItemAtPosition()'メソッドは問題の文字列を返します。 Javaで同じことを投稿して、それをより良く理解することはできますか? – chandil03

答えて

0

あなたはgetItemAtPosition()Cursor

+0

私はそれを逃していた、ありがとう – masc

+0

問題はありません、マス – Hohenhiem

関連する問題