2016-03-27 2 views
0

Я использую SimpleCursorAdapter для отображения информации в ListView.Иногда столбец SimpleCursorAdapter «_id» не существует, не всегда. Зачем?

adapter = new SimpleCursorAdapter(
       this, 
       R.layout.item_music, 
       myCursor, 
       new String[]{ 
         MediaStore.Audio.Media.ARTIST, 
         MediaStore.Audio.Media.ALBUM, 
         MediaStore.Audio.Media.TITLE, 
         MediaStore.Audio.Media._ID}, 
       // To widget ids in the row layout... 
       new int[]{ 
         R.id.item_artist, 
         R.id.item_album, 
         R.id.item_title, 
         R.id.item_action}); 

Иногда он срабатывает и иногда сбой происходит с ошибкой "column '_id" не существует ". Что случилось?

Это мой Logcat:

java.lang.IllegalArgumentException: column '_id' does not exist 
at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:303) 
at android.support.v4.widget.CursorAdapter.swapCursor(CursorAdapter.java:344) 
at android.support.v4.widget.SimpleCursorAdapter.swapCursor(SimpleCursorAdapter.java:326) 

Спасибо за вашу помощь.

+1

после полной LogCat –

ответ

0

Необходимо иметь select _id всякий раз, когда вы хотите что-то выбрать от database и отобразите его до listView.

Например:

Cursor cur = db.rawQuery("select _id,* from your_table", null); 
+0

Я использовал CursorLoader, чтобы получить курсор, так как использовать выберите _id, как ваше предложение? Благодарю. – strictlad

Смежные вопросы