В этом посте рассказывается как создать SearchView с использованием библиотеки SherlockActionBar.
Класс MainActivity должен быть наследником класса SherlockActivity и интерфейса OnQueryTextListener.
public class MainActivity extends SherlockActivity implements SearchView.OnQueryTextListener{
Далее создаем переменную типа SearchView.
SearchView searchView;
В методе onCreateOptionsMenu создаем searchItem, который будет частью нашего экшен бара. В методе add константа SEARCH является уникальным индитификатором.
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuItem searchItem = menu.add(Menu.NONE, SEARCH, Menu.NONE, R.string.search);
searchItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM
| MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
searchView = new SearchView(getApplicationContext());
searchItem.setActionView(searchView);
searchView.setOnQueryTextListener(this);
return true;
}
Следующие два метода необходимы, т.к. мы унаследовали интерфейс OnQueryTextListener.
public boolean onQueryTextChange(String newText) {
return false;
}
public boolean onQueryTextSubmit(String query) {
return true;
}
Класс MainActivity должен быть наследником класса SherlockActivity и интерфейса OnQueryTextListener.
public class MainActivity extends SherlockActivity implements SearchView.OnQueryTextListener{
Далее создаем переменную типа SearchView.
SearchView searchView;
В методе onCreateOptionsMenu создаем searchItem, который будет частью нашего экшен бара. В методе add константа SEARCH является уникальным индитификатором.
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuItem searchItem = menu.add(Menu.NONE, SEARCH, Menu.NONE, R.string.search);
searchItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM
| MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
searchView = new SearchView(getApplicationContext());
searchItem.setActionView(searchView);
searchView.setOnQueryTextListener(this);
return true;
}
Следующие два метода необходимы, т.к. мы унаследовали интерфейс OnQueryTextListener.
public boolean onQueryTextChange(String newText) {
return false;
}
public boolean onQueryTextSubmit(String query) {
return true;
}
Пара дополнений:
ОтветитьУдалить1) Наследовать можно и от SherlockListActivity;
2) При наследовании от неё возникает исключение в строке
searchView = new SearchView(getApplicationContext());
выход: searchView = new SearchView(this);
почему так - не знаю.