У меня getFilter
в моем recyclerView
классе адаптеров.Это не работает должным образом, если я ищу имя, которое начинается с 'A', в результатах списка нет изменений.Предположим, я ищу имя, начинающееся с 'S', имя придет в начало списка.Также я пытаюсь сделать то же самое с номером телефона и пин-кодом.Это ничего не показывает.Это то, что я пытаюсь:
EditText.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) {
if(adapter!=null){
adapter.getFilter().filter(s);
}
}
});
Этот код выше я использовал для отправки символов, чтобы получить метод фильтрации:
@Override
public Filter getFilter() {
return new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
String charString = constraint.toString().toLowerCase();
if(charString.isEmpty()){
mDataFiltered = mData;
}
else{
List<Guru> filteredList = new ArrayList<Guru>();
for(Guru row:mData){
if(row.getName().toLowerCase().contains(charString) ||
row.getMobile().contains(charString) || row.getOfficePincode().contains(charString)|| row.getHomePincode().contains(charString) ){
filteredList.add(row);
}
}
mDataFiltered = filteredList;
}
FilterResults filterResults = new FilterResults();
filterResults.values = mDataFiltered;
return filterResults;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
if(results.values!=null){
mDataFiltered = (List<Guru>) results.values;
notifyDataSetChanged();
}
}
};
Здесь я делаю функцию фильтра.Если вы знаете ошибку, просто пингуйте меня.