0

我在 recyclerview 中有一个项目列表。这些项目包含名称、价格等。我想过滤列表,就像用户通过 rangeeekbar 选择 1200 到 5000 的价格范围一样,它应该只显示该价格范围内的项目。我使用了 bottomsheetfragment对于范围搜索栏

  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());


                }
            });

这是我在底部表中创建的rangeeekbar

@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();
        }
    };
}

这是用于过滤但它不起作用

4

0 回答 0