У меня есть список предметов в программе recyclerview. Эти товары содержат имя, цену и т. Д. Я хочу отфильтровать список, например, если пользователь выбирает диапазон цен от 1200 до 5000 через диапазон поиска, он должен показывать только элементы в этом ценовом диапазоне. IЯ использовал фрагмент нижнего листа для rangeseekbar
price.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getContext());
LayoutInflater factory1 = LayoutInflater.from(getContext());
View view1 = factory1.inflate(R.layout.range_seekbar, null);
final CrystalRangeSeekbar rangeseekbar = (CrystalRangeSeekbar) view1.findViewById(R.id.rangeSeekbarprice);
rangeseekbar.setMinValue(0);
rangeseekbar.setMaxValue(10000);
final TextView tvMin = (TextView) view1.findViewById(R.id.pricetextmin);
final TextView tvMax = (TextView) view1.findViewById(R.id.pricetextmax);
final Button okBtn=(Button)view1.findViewById(R.id.ok_btn_seekbar);
tvMin.setText("$ "+"0");
tvMax.setText("$ "+"10000");
alertDialogBuilder.setView(view1);
rangeseekbar.setOnRangeSeekbarChangeListener(new OnRangeSeekbarChangeListener() {
@Override
public void valueChanged(Number minValue, Number maxValue) {
tvMin.setText("$ "+rangeseekbar.getSelectedMinValue());
tvMax.setText("$ "+rangeseekbar
.getSelectedMaxValue());
}
});
это для rangeseekbar, который я создал в нижнем листе
@Override
public Filter getFilter() {
return new Filter() {
@Override
protected FilterResults performFiltering(CharSequence charSequence) {
String charString = charSequence.toString();
if (charString.isEmpty()) {
data = pricelist;
} else {
List<HotelsListObj> filteredList = new ArrayList<>();
for (HotelsListObj row : pricelist) {
// name match condition. this might differ depending on your requirement
// here we are looking for name or phone number match
if (row.getHotelPrice().toLowerCase().contains(charString.toLowerCase()) || row.getHotelPrice().contains(charSequence)) {
filteredList.add(row);
}
}
data = filteredList;
}
FilterResults filterResults = new FilterResults();
filterResults.values = data;
return filterResults;
}
@Override
protected void publishResults(CharSequence charSequence, FilterResults filterResults) {
data = (ArrayList<HotelsListObj>) filterResults.values;
notifyDataSetChanged();
}
};
}
это для фильтрации, но он не работает