1

使用搜索对话框时,我已成功实施自定义搜索建议。然而,目前每个建议项都只是文本。我想在左侧添加一个图标。但是问题是我在本地没有这些图片,而是可以通过 URL 访问它们。我无法在文档(构建建议表)中找到如何将 URL 而不是 Uri 发送到 SUGGEST_COLUMN_ICON_1 下的本地文件。

4

3 回答 3

1

所以这是可能的,但它非常笨拙而且有点hacky。您必须创建一个 ContentProvider 来提供应用程序内部缓存目录中的图像(请参阅我的答案https://stackoverflow.com/a/15667914/473201)。

然后,由于您的文件 ContentProvider 将在主 UI 线程上访问,因此您无法在那里下载图像。您必须下载搜索建议 ContentProvider 的 query() 函数中的所有图像。如果您将它们放在应用程序的内部缓存目录中,则 ContentProvider 文件可以在 SearchView 请求它们时返回它们。

就像是:

class ImagesProvider extends ContentProvider {
...
// stuff from https://stackoverflow.com/a/15667914/473201
...
}

然后在您的搜索 ContentProvider 中:

@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {

   // create a cursor table of results
   MatrixCursor mc = new MatrixCursor(columns);
   for (SearchResult res : results) {

      String filename = res.getId();
      ImagesProvider.downloadAndSaveFile(filename, res.getPictureUrl());

      mc.addRow(new Object[] {
        res.getId(),
        res.getName(),
        ContentUris.withAppendedId(ImagesProvider.CONTENT_URI, filename)
      });
   }
   return mc;
}
于 2013-03-27T19:52:55.643 回答
0

我知道这是一个老问题,但 StackOverflow 关于该主题的帖子似乎很少。

我花了很多时间(约 5 小时)尝试让搜索使用自定义布局(希望结果是全屏并按类别分段,这是一个非常自定义的布局)并使用android 文档中描述的方法在这个主题上,但是在使用 SearchWidget 时从未创建过我的 SearchActivity(具有其定义的自定义布局),因为 Android 系统直接调用我的 Content Provider 的查询方法并将结果显示在一个丑陋的下拉列表中。我最终推出了自己的自定义搜索,花了大约 1 个小时,所以简短的回答是,推出你自己的。

于 2015-02-12T20:45:28.367 回答
0

我发现这是不可能的,只要你想使用默认的 Android 搜索功能。如果您知道其他情况,请发表评论。

于 2011-04-01T22:16:10.067 回答