如何将静态数据的ArrayAdapter<String>
转换为CursorAdapter
,以便在SearchView
中使用建议侦听器?我已经从静态数据(allString
)构造了ArrayAdapter<String>
ArrayAdapter<String> searchAdapter = new ArrayAdapter<String>(context, R.layout.listitem, allString);
我把它用在MultiAutoCompleteTextView
上,它在API级别低于11的设备上运行良好。
MultiAutoCompleteTextView findTextView.setAdapter(searchAdapter);
然而,我的目标API是11,对于API>10,我使用了一个ActionBar
,我希望在其中有一个SearchView。
下面是我尝试过的内容:它确实显示了带有嵌入式SearchView
的ActionBar
,但没有像在MultiAutoCompleteTextView
中那样给出任何建议。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
if (android.os.Build.VERSION.SDK_INT > 10){
inflater.inflate(R.menu.menu11, menu);
searchView = (SearchView) menu.findItem(R.id.MENU_SEARCH).getActionView();
int[] to = {0};
CursorAdapter cursorAdapter = new SimpleCursorAdapter(context, R.layout.listitem, null, allBusStopString, to);
searchView.setSuggestionsAdapter(cursorAdapter);
searchView.setOnSuggestionListener(new OnSuggestionListener() {
@Override
public boolean onSuggestionClick(int position) {
String selectedItem = (String)cursorAdapter.getItem(position);
Log.v("search view", selectedItem);
return false;
}
@Override
public boolean onSuggestionSelect(int position) {
return false;
}
});
}else{
inflater.inflate(R.menu.menu, menu);
}
return true;
}
发布于 2012-07-24 18:04:08
这很奇怪,SearchView.setSuggestionsAdapter
只接受CursorAdapter。
您可以创建MatrixCursor并用字符串数组中的数据填充它。我希望你有一个小的数据收集。
然后将光标传递给CursorAdapter。
String[] columnNames = {"_id","text"}
MatrixCursor cursor = new MatrixCursor(columnNames);
String[] array = getResources().getStringArray(R.array.allStrings); //if strings are in resources
String[] temp = new String[2];
int id = 0;
for(String item : array){
temp[0] = Integer.toString(id++);
temp[1] = item;
cursor.addRow(temp);
}
String[] from = {"text"};
int[] to = {R.id.name_entry};
busStopCursorAdapter = new SimpleCursorAdapter(context, R.layout.listentry, cursor, from, to);
https://stackoverflow.com/questions/11628172
复制相似问题