Добавление поиска SearchView в Activity не содержащую ListView

187
06 июля 2017, 00:57

Вопрос заключается в следующем: я реализовал SearchView в ToolBar, при этом в активности нет элемента ListView. На ней расположены 10 кнопок с картинками. Как сделать чтобы при открытии SearchView кнопки пропадали и появлялся список, по которому производится поиск?

Во многих приложениях при нажатии на SearchView содержимое экрана пропадает, остается только белый фон и на нем сразу отображается ListView по которому идет поиск. Хочу сделать также.

Если вопрос неясен, напишите в комментариях, постараюсь сделать картинки.

Answer 1

В вашем activity переопределите метод onCreateOptionsMenu

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    //R.menu.dashboard поменйте на id своего меню
    inflater.inflate(R.menu.dashboard, menu);
    //R.id.action_search поменйте на id своего searchView
    MenuItem searchItem = menu.findItem(R.id.action_search);
    SearchView searchView = (SearchView) searchItem.getActionView();
    MenuItemCompat.setOnActionExpandListener(searchItem, new MenuItemCompat.OnActionExpandListener() {
        @Override
        public boolean onMenuItemActionExpand(MenuItem item) {
            //скрываете UI, показываете список с результатами поиска
            return true;
        }
        @Override
        public boolean onMenuItemActionCollapse(MenuItem item) {
            //скрываете список с результатами поиска, показываете UI
            return true;
        }
    });
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) {
            //производите поиск, обновляете содержимое списка
            return true;
        }
        @Override
        public boolean onQueryTextChange(String newText) {
            return false;
        }
    });
}

C помощью вышеприведенного кода можно реагировать на открытие/закрытие searchView, а также на ввод в него текста

Как сделать чтобы при открытии SearchView кнопки пропадали и появлялся список, по которому производится поиск?

это необходимо делать вручную, например так (вариант не оптимальный, но самый понятный). Поместите в активити список, в котором будете отображать результаты поиска, сделайте его невидимым

setVisibility(View.INVISIBLE)

При открытии searchView делаете список видимым,setVisibility(View.VISIBLE) а все кнопки - невидимыми. Т.е. у всех кнопок надо вызвать

setVisibility(View.INVISIBLE)

Ну а при закрытии searchView - делает все наоборот

READ ALSO
Преобразование String to Int без parseInt

Преобразование String to Int без parseInt

Нужно реализовать метод без использования parseIntПодскажите основной алгоритм как это сделать ?

173
Конфигурация Spring Boot с использованием gradle

Конфигурация Spring Boot с использованием gradle

Есть приложение, написанное на Spring BootДля сборки используется gradle

156
По каким причинам могут не работать меди запросы?

По каким причинам могут не работать меди запросы?

Почему могут не работать медиа запросы? Делаю все как положено: сами запросы всегда идут в конце документа, написаны без ошибок @media screen and (max-width:...

233
Выборка всех объектов из БД на страницу

Выборка всех объектов из БД на страницу

Есть несколько объектов у которых есть класс Бизнес, Эконом и КомфортЕсли выбрать в filter-class(это select) класс Бизнес, то страница result

189