Próbuję użyć SearchView i mam wszystko do pracy, z wyjątkiem sytuacji, gdy chcę przeszukać pusty ciąg znaków.
Funkcja onQueryTextChange reaguje, gdy usuwam ostatni znak, ale chcę, aby użytkownik mógł nacisnąć przycisk wyszukiwania, gdy pole wyszukiwania jest puste.Android SearchView pusty ciąg
final SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextChange(String newText) {
// Do something
return true;
}
@Override
public boolean onQueryTextSubmit(String query) {
// Do something
return true;
}
};
searchView.setOnQueryTextListener(queryTextListener);
Próbowałem również użyć OnKeyListner. ale to też nie działa.
To wydaje się być tak proste, ale nie mogę go uruchomić. Jakieś sugestie?
Edit
Szukałem rozwiązania na chwilę teraz i tylko kilka minut po wysłaniu tego, znalazłem rozwiązanie.
W tym wątku dowiedziałem się, że to nie był błąd, ale w rzeczywistości był celowy.
Android SearchView.OnQueryTextListener OnQueryTextSubmit not fired on empty query string
Więc po prostu pobrane ActionBarSherlock i kilka modyfikacji do onSubmitQuery() metoda
Od
private void onSubmitQuery() {
CharSequence query = mQueryTextView.getText();
if (query != null && TextUtils.getTrimmedLength(query) > 0) {
if (mOnQueryChangeListener == null
|| !mOnQueryChangeListener.onQueryTextSubmit(query.toString())) {
if (mSearchable != null) {
launchQuerySearch(KeyEvent.KEYCODE_UNKNOWN, null, query.toString());
setImeVisibility(false);
}
dismissSuggestions();
}
}
}
i wersji zmodyfikowanej
private void onSubmitQuery() {
CharSequence query = mQueryTextView.getText();
if(query == null) {query = "";}
if (mOnQueryChangeListener == null
|| !mOnQueryChangeListener.onQueryTextSubmit(query.toString())) {
if (mSearchable != null) {
launchQuerySearch(KeyEvent.KEYCODE_UNKNOWN, null, query.toString());
setImeVisibility(false);
}
dismissSuggestions();
}
}
Hope this helps jeśli ktokolwiek inny ma tę pr oblem.
Zamiast edytować oryginalne pytanie, możesz odpowiedzieć na własne pytanie. – theblang