2017-08-29 49 views
0

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

这是工作 java代码,当我在列表视图上单击它时,我会记下该代码。Kotlin android数据库:无法投射java.lang.String到android.database.Cursor

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

那么这应该是科特林代码:

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 

} 

我不明白,为什么在科特林它给了我这个ClassCastException异常错误,因为在Java中是全线畅通。

+0

发表您的ListView适配器也。 – chandil03

+0

完成,你认为有什么问题? – masc

+0

'getItemAtPosition()'方法返回问题所在的字符串。你可以在Java中发布相同的东西来更好地理解它吗? – chandil03

回答

0

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

+0

我错过了,谢谢 – masc

+0

没问题,masc – Hohenhiem