Как отфильтровать просмотр списка Recycler по ценовому диапазону с помощью rangeseekbar? - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть список предметов в программе 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();
        }
    };
}

это для фильтрации, но он не работает

...