Làm cách nào để chuyển đổi dữ liệu tĩnh ArrayAdapter<String>
thành số CursorAdapter
để sử dụng Trình nghe đề xuất trong SearchView
? tôi đã xây dựng các ArrayAdapter<String>
từ dữ liệu tĩnh (allString
)Chuyển đổi một ArrayAdapter thành CursorAdapter để sử dụng trong SearchView
ArrayAdapter<String> searchAdapter = new ArrayAdapter<String>(context, R.layout.listitem, allString);
và tôi sử dụng nó cho một MultiAutoCompleteTextView
mà hoạt động tốt trong các thiết bị với mức API ít hơn 11
MultiAutoCompleteTextView findTextView.setAdapter(searchAdapter);
Tuy nhiên API mục tiêu của tôi là mức là 11 và dành cho API> 10 Tôi sử dụng một số ActionBar
, trong đó tôi muốn có một SearchView thay thế.
Đây là những gì tôi đã thử: Nó hiển thị ActionBar
với số nhúng SearchView
nhưng không đưa ra bất kỳ đề xuất nào như trong 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;
}
cảm ơn, nó làm việc. –
Tôi chỉ cần thêm cột _id để tránh lỗi được giải thích [ở đây] (http://stackoverflow.com/questions/3360605/column-id-does-not-exist) –
Có thực sự, tôi đã quên về '_id' – pawelzieba