Как отфильтровать список переработчиков по pricerange с помощью rangeseekbar?

#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 Это не фильтрация списка