понедельник, 17 сентября 2012 г.

Создание SearchView с использованием SherlockActionBar

В этом посте рассказывается как создать 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;
}

1 комментарий:

  1. Пара дополнений:

    1) Наследовать можно и от SherlockListActivity;
    2) При наследовании от неё возникает исключение в строке
    searchView = new SearchView(getApplicationContext());

    выход: searchView = new SearchView(this);
    почему так - не знаю.

    ОтветитьУдалить