Я пытаюсь реализовать searchview
на моем RecyclerView
, используя EditText
. Все идет хорошо, пока я не попытаюсь удалить весь мой текст на EditText
. Мое приложение перестает работать.
Я пытался добавить условие для того, что приложение должно делать, когда мой текст равен нулю:
FragmentHome.java
edSearch.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
adapter.getFilter().filter(s);
}
});
Adapter.Java
public Filter getFilter() {
return new Filter() {
@Override
protected FilterResults performFiltering(CharSequence charSequence) {
String charString = charSequence.toString();
if (charString.isEmpty()||charString.equals("")||charString.equals(" ")) {
listpensiunFiltered = listpensiun;
} else {
List<PensiunModel> filteredList = new ArrayList<>();
for (PensiunModel row : listpensiun ) {
// name match condition. this might differ depending on your requirement
// here we are looking for name or phone number match
if (row.getNamaKtp().toLowerCase().contains(charString.toLowerCase()) || row.getNopen2().contains(charSequence)) {
filteredList.add(row);
}
}
listpensiunFiltered = filteredList;
}
FilterResults filterResults = new FilterResults();
filterResults.values = listpensiunFiltered;
return filterResults;
}
@Override
protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
listpensiunFiltered = (ArrayList<PensiunModel>) filterResults.values;
notifyDataSetChanged();
}
};
}