0

嗨,我使用合并光标在我的列表视图中显示数据结果,我添加了一个索引器,它的所有工作正常,但我注意到 az 可以向我显示外部数据,之后再次 az 但现在是内部数据,所以我的索引“有效”,但不是我希望的那样,我知道合并游标无法排序,所以我想知道我可以做一个 rawquery 吗?加入 MediaStore.Audio.Media.INTERNAL_CONTENT_URI 和 MediaStore.Audio.Media.EXTERNAL_CONTENT_UR ?? 如何?我想加入,然后按 Song 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);
4

1 回答 1

0

你不能这样做,rawQuery因为

  • MediaStore(实际上MediaProvider)是一个ContentProvider,而不是一个SQLiteDatabase(虽然它在那个抽象层之下) - 它不会故意提供这些 SQLite 操作,因为除了 SQLite 数据库之外,您还可以拥有其他支持 ContentProvider 的东西。
  • internal并且external是单独的数据库文件并单独访问。您无法构建引用另一个文件的查询(除非您附加它们,因为您无权访问该低级别,所以您不能附加它们)

您可以构建一个MatrixCursor,在其中将两个源游标的数据按排序顺序放置。

于 2012-04-19T15:48:39.997 回答