#java #android #android-recyclerview #filtering #rangeseekbar
#java #Android #android-recyclerview #фильтрация #rangeseekbar дальнобойщик
Вопрос:
У меня есть список элементов в recyclerview. элементы содержат название, цену и т.д.Я хочу отфильтровать список, например, если пользователь выбирает pricerange от 1200 до 5000 через rangeseekbar, он должен показывать только товары в этом ценовом диапазоне.. Я использовал bottomsheetfragment для 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, который я создал в bottomsheet
@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();
}
};
}
это для фильтрации, но это не работает
Комментарии:
1. Что вы подразумеваете под «его не работает»?
2. @S-Sh Это не фильтрация списка