2012-04-19 21 views
0

Привет, я использую курсор слияния, чтобы показать результат данных в моем представлении списка, я добавил индексатор и все его работоспособность, но я заметил, что az его ok показывает мне внешние данные, после чего снова az, но теперь внутренние данные, поэтому мой индекс «работает», но не так, как я хочу, я знаю, что слияние не может быть отсортировано, поэтому мне интересно, могу ли я сделать rawquery? присоединиться к MediaStore.Audio.Media.INTERNAL_CONTENT_URI и MediaStore.Audio.Media.EXTERNAL_CONTENT_UR ?? и как? Я хочу присоединиться, а затем сортировать по песне ASC. или MediaStore.Audio.Media.DEFAULT_SORT_ORDER или как я могу преобразовать список массивов или другую коллекцию в курсор?Как присоединиться к MediaStore.Audio.Media

Текущий код:

private Cursor getInternalAudioCursor(String selection, 
    String[] selectionArgs) { 
return this.getContentResolver().query(
     MediaStore.Audio.Media.INTERNAL_CONTENT_URI, 
     INTERNAL_COLUMNS, 
     selection, 
     selectionArgs, 
     MediaStore.Audio.Media.DEFAULT_SORT_ORDER); 

}

private Cursor getExternalAudioCursor(String selection, 
    String[] selectionArgs) { 
return this.getContentResolver().query(
     MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, 
     EXTERNAL_COLUMNS, 
     selection, 
     selectionArgs, 
     MediaStore.Audio.Media.DEFAULT_SORT_ORDER); 

}

Cursor c = new MergeCursor(new Cursor[] { 
     getExternalAudioCursor(selection, argsArray), 
     getInternalAudioCursor(selection, argsArray)}); 
startManagingCursor(c); 

ответ

0

вы не можете сделать, потому что rawQuery

  • MediaStore (на самом деле MediaProvider) является ContentProvider, а не SQLiteDatabase (он находится под этим уровнем абстракции) - он не предусматривает эти операции SQLite намеренно, поскольку у вас могут быть другие вещи, поддерживающие ContentProvider, чем база данных SQLite.
  • internal и external являются отдельными файлами базы данных & доступны отдельно. Вы не можете создавать запросы, которые ссылаются на другой файл (если не присоединить их, которые вы не можете, так как у вас нет доступа к этому низкому уровню)

Вы могли бы построить MatrixCursor, в которой вы положили данные обоих исходных курсоров в отсортированном порядке.

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