Kod, nad którym pracuję, używa a Toolbar
i pompuje a menu
.
Oto kod
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 ()
{
..........
}
}
Ale teraz wymagają Search
przycisku w tool_bar
. Udało mi się to ująć, podążałem za przewodnikiem tutaj
Kiedy próbuję napisać coś do wyszukiwania, toast, który wzniosłem, aby przetestować listener
nigdy nie pokazany. co wskazuje, że listener
nie działa
@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
Jeśli chcesz skonfigurować funkcję wyszukiwania w swoim
Fragment
, po prostu dodaj te kilka wierszy:Krok 1 - Dodaj pole wyszukiwania do siebie
toolbar
:Krok 2 - Dodaj logikę do pliku
onCreateOptionsMenu()
źródło
R.menu.main
?Jeśli chcesz dodać go bezpośrednio na pasku narzędzi.
źródło
android.support.v7.widget.SearchView
XML.implementation 'com.android.support:design:$latest_version'
Integracja SearchView z RecyclerView
1) Dodaj element SearchView w menu
SearchView
można dodać jakactionView
w menu za pomocą2) Zaimplementuj SearchView.OnQueryTextListener w swojej aktywności
SearchView.OnQueryTextListener
ma dwie abstrakcyjne metody. Twój szkielet aktywności wyglądałby teraz tak po zaimplementowaniu nasłuchiwania tekstu SearchView.3) Skonfiguruj tekst podpowiedzi SerchView, odbiornik itp
4) Zaimplementuj SearchView.OnQueryTextListener
W ten sposób możesz zaimplementować abstrakcyjne metody słuchacza.
5) Napisz metodę filtru w adapterze RecyclerView.
Możesz wymyślić własną logikę w oparciu o swoje wymagania. Oto przykładowy fragment kodu pokazujący listę Name, która zawiera tekst wpisany w
SearchView
.Pełną działającą próbkę kodu można znaleźć> TUTAJ
Możesz również sprawdzić kod w SearchView z bazą danych SQLite w tej aplikacji muzycznej
źródło
Implementacja SearchView bez użycia
menu.xml
pliku i przycisku Otwórz za pomocąW Twoim
Activity
musimy użyć metodyonCreateOptionsMenu
metody, w której programowo zawyżamy plikSearchView
A w klasie Activity możesz otworzyć przycisk
SearchView
na dowolnym przycisku, klikając pasek narzędzi, jak poniżejźródło