来自多个内容提供商的结果的游标 - Android

时间:2011-09-26 10:57:58

标签: android

我想查询两个不同的内容提供商:

MediaStore.Images.Media.EXTERNAL_CONTENT_URI

MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI

首先,我需要查询“MediaStore.Images.Media.EXTERNAL_CONTENT_URI”,以便我可以将光标移动到特定日期之后添加的所有图像。我现在知道怎么做了。问题在于缩略图。我还需要查询“MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI”以获取缩略图图像,以便我可以在列表视图中显示它们。这是我在某种程度上需要结合两个查询的结果,因为我只想要在特定日期之后添加的图像的缩略图。但是“MediaStore.Images.Thumbnails”没有关于何时添加图像的信息。它只有“MediaStore.Images.Media”中原始图像的ID。

所以,总结一下我需要帮助的地方:

我需要一个包含以下列的游标:

MediaStore.Images.Thumbnails.IMAGE_ID,

MediaStore.Images.Thumbnails._ID,

MediaStore.Images.Thumbnails.DATA,

MediaStore.Images.Media.DATA,

MediaStore.Images.Media.DATE_TAKEN

如何做到这一点?

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

您可以从一个提供商中选择数据,然后使用ViewBinder选择每行。

Within MyActivity.onCreate() {
...
cursorAdapter.setViewBinder(myViewBinder),
...
}

在某处你像这样实现你的ViewBinder ......

private final ViewBinder myViewBinder=new ViewBinder() {
  @Override
  public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
    if(columnIndex==INDEX_OF_THUMB) {
      int id=cursor.get("_id");
      // get thumb-image data for id from somewhere
      // and display in view
    }
};

希望这有帮助。

答案 1 :(得分:1)

AFAIK,您需要手动完成连接并将结果倒入MatrixCursor(如果您确定需要Cursor)或其他一些数据结构。