使用自定义布局搜索自定义建议

时间:2011-03-17 22:28:18

标签: android search-suggestion

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

3 个答案:

答案 0 :(得分: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
...
}

然后在您的搜索内容提供者:

@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;
}

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

我花了很多时间(约5个小时)尝试使用自定义布局进行搜索(想要的结果是全屏并按类别细分,这是一个非常自定义的布局)并使用关于主题的android documentation,但是当使用SearchWidget时我的SearchActivity(及其定义的自定义布局)从未被创建,因为Android系统直接调用我的Content Provider的查询方法并在丑陋的下拉列表中显示结果。我最后滚动了我自己的自定义搜索,花了大约1个小时,所以简短的回答是,滚动你自己。