想做: 获取最近的搜索建议列表,然后在列表视图中显示,下面是代码,PS。已经在数据库中有一些建议。
......
private String string_uri = "content://com.xyz.music_search_provider/" + SearchManager.SUGGEST_URI_PATH_QUERY;
private Uri uri=Uri.parse(string_uri);
private String[] projection={SearchManager.SUGGEST_COLUMN_QUERY};
.....
cursor=getContentResolver().query(uri,projection,null,null,null);
search_history_list=(ListView)findViewById(R.id.search_history_list);
simpleCursorAdapter=new SimpleCursorAdapter(this,android.R.layout.simple_list_item_1,cursor,
new String[] { SearchManager.SUGGEST_COLUMN_QUERY },new int[]{android.R.id.text1},SearchManager.FLAG_QUERY_REFINEMENT);
search_history_list.setAdapter(simpleCursorAdapter);
自定义搜索提供程序扩展SearchRecentSuggestionsProvider
public class MusicSearchProvider extends SearchRecentSuggestionsProvider {
public MusicSearchProvider() {
setupSuggestions("com.xyz.music_search_provider",DATABASE_MODE_QUERIES|DATABASE_MODE_2LINES);
}
}
问题是,当运行时,错误显示
cursor=getContentResolver().query(uri,projection,null,null,null);
Caused by: java.lang.NullPointerException: Attempt to read from null array
如下所示更改
cursor=getContentResolver().query(uri,null,null,null,null);
错误是一样的。 但改变就好了,
cursor=getContentResolver().query(uri,null,null,new String[]{query},null);
没有显示错误,但列表视图中只显示了一个结果。 任何人都知道为什么以及如何解决这个问题,请帮助我。
答案 0 :(得分:0)
找到解决方案,但仍然不太清楚,改变如下,
cursor=getContentResolver().query(uri,null,null,new String[]{""},null);
未将selectionArgs设置为null,但设置""这将显示SearchRecentSuggestionsProvider中的所有结果