Я делаю поиск в панели действий приложения. У меня есть значок поиска, и он складывается, когда я нажимаю его, и я могу вводить запросы.Android SearchView setOnQueryTextListener не работает?
Когда мое приложение запускается, вызывается onCreateOptionsMenu. Я печатаю тестовый оператор, чтобы проверить его, а затем внутри этой функции я установил setOnQueryTextListener. Но это не сработает. Я пробовал тестировать его, печатая, когда когда-либо печатаю что-то в searchview, но он не работает. Пожалуйста, помогите мне найти ошибку. Также есть Listener, когда он расширяется и сжимается, и это тоже не работает.
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.manageusersmenu, menu);
MenuItem item = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);
Log.i("onCreateOptionsMenu: ", "I made it in here");
MenuItemCompat.setOnActionExpandListener(item,
new MenuItemCompat.OnActionExpandListener() {
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
mAdapter.setFilter(mUsers);
Log.i("ActionCollapse: ", "Collapsed");
return true;
}
@Override
public boolean onMenuItemActionExpand(MenuItem item) {
Log.i("ActionExpand: ", "Expanded");
return true;
}
});
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
Log.i("on query: ", newText);
List<User> filteredModelList = filter(mUsers, newText);
for (int i = 0; i < filteredModelList.size(); i++) {
Log.i("user, ", filteredModelList.get(i).getFName().toString());
}
mAdapter.setFilter(filteredModelList);
return true;
}
private List<User> filter(List<User> users, String query) {
query = query.toLowerCase();
final List<User> filteredModelList = new ArrayList<>();
for (User u : users) {
final String text = u.getFName().toLowerCase();
if (text.contains(query)) {
filteredModelList.add(u);
}
}
return filteredModelList;
}
});
}
файл меню
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
>
<!-- "Mark Favorite", should appear as action button if possible -->
<item
android:id="@+id/add_new_user"
android:icon="@drawable/ic_action_name"
android:title="@string/add_new_user"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/action_search"
android:icon="@android:drawable/ic_menu_search"
android:title="action_search"
app:actionViewClass="android.support.v7.widget.SearchView"
app:showAsAction="always|collapseActionView" />
</menu>
разместим ваш manageusersmenu.xml также – UMESH0492
просто поставил файл меню – Pete