我有一个String元素数组:
suggestion_name = new String[main_data.getJSONArray("cafe").length()];
由一些JSON数据填充:
for (int i=0; i<suggestion_name.length;i++){
suggestion_name[i] = main_data.getJSONArray("cafe").getJSONObject(i).getString("name");
}
当我调试时,我看到suggestion_name数组中有2个元素,这里的每一个都很好。然后我按如下方式创建我的建议适配器:
public void set_suggestion_adapter_array(){
String[] from = new String[] {"cafe_name"};
int[] to = new int[] {R.id.suggestionTextView};
cursorAdapter = new SimpleCursorAdapter(a,
R.layout.suggestions_single_item,
null,
from,
to,
CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
}
并填充建议列表,如下所示:
public void populate(String text){
MatrixCursor matrixCursor = new MatrixCursor(new String[]{ BaseColumns._ID, "cafe_name" });
for (int i=0; i<suggestion_name.length; i++) {
if (suggestion_name[i].toLowerCase().startsWith(text.toLowerCase()))
matrixCursor.addRow(new Object[] {i, suggestion_name[i]});
}
cursorAdapter.changeCursor(matrixCursor);
cursorAdapter.notifyDataSetChanged();
}
我在onQueryTextChange中调用populate()方法:
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
// search database for query
getDataMap.search(query);
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
// show suggestions
getDataMap.populate(newText);
return true;
}
});
然而,当我开始在搜索字段中输入我的建议数组的元素时,我没有得到任何建议。我调试了几次,看看我的代码是否没有及时调用,但一切都按顺序完美运行。我的数组元素不包含任何奇怪的字母,符号等。我在这里缺少什么?感谢。
答案 0 :(得分:0)
对齐!我忘了设置适配器。
searchView.setSuggestionsAdapter(cursorAdapter);
我认识了新秀。无论如何,也许有人找到代码并解决有用的问题。