Код, над которым я работаю, использует Toolbar
и раздувает menu
.
Вот код
private Toolbar mToolbar;
mToolbar.inflateMenu(R.menu.chat_screen_menu);
setupMenu ();
private void setupMenu ()
{
mMenu = mToolbar.getMenu();
if (mMenu != null)
{
if (mChatPager != null && mChatPager.getCurrentItem() > 0)
{
mMenu.setGroupVisible(R.id.menu_group_chats, true);
mMenu.setGroupVisible(R.id.menu_group_contacts, false);
}
else
{
mMenu.setGroupVisible(R.id.menu_group_chats, false);
mMenu.setGroupVisible(R.id.menu_group_contacts, true);
mMenu.setGroupVisible(R.id.menu_group_otr_verified,false);
mMenu.setGroupVisible(R.id.menu_group_otr_unverified,false);
mMenu.setGroupVisible(R.id.menu_group_otr_off,false);
}
}
mToolbar.setOnMenuItemClickListener(new OnMenuItemClickListener ()
{
..........
}
}
Но теперь им требуется Search
кнопка в файле tool_bar
. Мне удалось это поставить, я следовал руководству здесь.
Когда я пытаюсь написать что-то для поиска, тост, который я поставил для проверки, listener
никогда не показывался. что указывает listener
на не работает
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.chat_screen_menu, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
mSearchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_menu_search));
final Toast toast = new Toast(mApp);
if (mSearchView != null )
{
mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
mSearchView.setIconifiedByDefault(false);
SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener()
{
public boolean onQueryTextChange(String newText)
{
mSearchString = newText;
//doFilterAsync(mSearchString);
toast.makeText(getApplicationContext(), "Test1", Toast.LENGTH_LONG).show();
return true;
}
public boolean onQueryTextSubmit(String query)
{
mSearchString = query;
//doFilterAsync(mSearchString);
toast.makeText(getApplicationContext(), "Test2", Toast.LENGTH_LONG).show();
return true;
}
};
mSearchView.setOnQueryTextListener(queryTextListener);
}
return true;
}
import android.support.v7.widget.SearchView
androidx.appcompat.widget.SearchView
Если вы хотите настроить средство поиска внутри себя
Fragment
, просто добавьте эти несколько строк:Шаг 1 - Добавьте вам поле поиска
toolbar
:Шаг 2 - Добавьте логику в свой
onCreateOptionsMenu()
источник
R.menu.main
?Если вы хотите добавить его прямо на панель инструментов.
источник
android.support.v7.widget.SearchView
в XML.implementation 'com.android.support:design:$latest_version'
Интеграция SearchView с RecyclerView
1) Добавить элемент SearchView в меню
SearchView
можно добавить какactionView
в меню, используя2) Реализуйте SearchView.OnQueryTextListener в своей деятельности
SearchView.OnQueryTextListener
имеет два абстрактных метода. Итак, ваш каркас активности теперь будет выглядеть так после реализации текстового прослушивателя SearchView.3) Настройте текст подсказки SerchView, слушателя и т. Д.
4) Реализуйте SearchView.OnQueryTextListener
Вот как вы можете реализовать абстрактные методы слушателя.
5) Напишите метод фильтрации в вашем адаптере RecyclerView.
Вы можете придумать свою собственную логику, исходя из ваших требований. Вот пример фрагмента кода для отображения списка Name, который содержит текст, введенный в
SearchView
.Полный образец рабочего кода можно найти> ЗДЕСЬ
Вы также можете проверить код в SearchView с базой данных SQLite в этом музыкальном приложении.
источник
Реализация SearchView без использования
menu.xml
файла и кнопки открытияВ вашем
Activity
нам нужно использовать методonCreateOptionsMenu
метода, в котором мы программно раздуваемSearchView
И в своем классе Activity вы можете открыть
SearchView
любую кнопку, нажав на панели инструментов, как показано нижеисточник