你好我使用合并光标在我的列表视图中显示数据结果,我添加了一个索引器,它的所有工作正常,但我注意到它的确定显示我的外部数据,之后再次az但现在是内部数据,所以我的索引“工作”,但不是我想要的,我知道mergecursor不能排序所以我想知道我可以做一个rawquery?加入 MediaStore.Audio.Media.INTERNAL_CONTENT_URI和MediaStore.Audio.Media.EXTERNAL_CONTENT_UR ??如何?我想加入,然后由宋ASC排序。或MediaStore.Audio.Media.DEFAULT_SORT_ORDER 或者我如何将数组列表或其他集合转换为游标?
当前代码:
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 :(得分:0)
你不能做rawQuery
,因为
MediaStore
(实际上MediaProvider
)是ContentProvider
,而不是SQLiteDatabase
(虽然它位于该抽象层之下) - 它不会故意提供这些SQLite操作你可以拥有支持ContentProvider而不是SQLite数据库的其他东西。internal
和external
是单独的数据库文件&单独访问。您无法构建引用另一个文件的查询(除非您附加了它们,因为您无法访问该低级别,因此无法附加它们)您可以构建一个MatrixCursor,您可以在其中按顺序放置两个源游标的数据。