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