EditText 做实时列表搜索

先很多情况下列表因为数据多都会有一个搜索的功能,有些搜索需要点击搜索才能去筛选,下面做一个根据输入框的数据去自动搜索

1、获取到控件

@BindView(R.id.et_search_for)
EditText mEtSearchFor;

2、通过Rxjava提供的方法做模糊搜索

/**
 * 模糊搜索
 */
RxTextView.textChanges(mEtSearchFor) //绑定EditText
        .skip(1)
        .debounce(SystemConstant.RxConstant.DEBOUNCE_TIME, TimeUnit.MILLISECONDS)
        .filter(new Predicate<CharSequence>() {
            @Override
            public boolean test(CharSequence charSequence) throws Exception {
                return charSequence.toString().trim().length() >= 0;
            }
        }).observeOn(AndroidSchedulers.mainThread())
        .subscribeWith(new Observer<CharSequence>() {
            @Override
            public void onSubscribe(Disposable d) {
            }

            @Override
            public void onNext(CharSequence charSequence) {
                souSuoList.clear();
                //获取到输入框的数据
                String trim = charSequence.toString().trim();
                //判断输入框的数据是否为空
                if (!trim.equals("")) {
                    //如果不为空,那就遍及整个列表
                    for (int i = 0; i < setBaseReponse1.size(); i++) {
                        //这个是根据什么字段做筛选
                        String s = setBaseReponse1.get(i).getTaskName() + setBaseReponse1.get(i).getTaskNumber();
                        //这个是判断输入的数据是否再这个字段里面
                        int i1 = s.toUpperCase().indexOf(trim.toUpperCase());
                        if (i1 != -1) {
                            //如果有就重新存到一个List集合里面
                            souSuoList.add(setBaseReponse1.get(i));
                        }
                    }
                    //重新给列表赋值  刷新数据
                    tackListAdapter.setSetBaseReponse1(souSuoList);
                    mRv.setAdapter(tackListAdapter);
                } else {
                    //判断如果输入框为空就直接用之前的list做数据渲染
                    tackListAdapter.setSetBaseReponse1(setBaseReponse1);
                    mRv.setAdapter(tackListAdapter);
                }

            }

            @Override
            public void onError(Throwable e) {
            }

            @Override
            public void onComplete() {

            }
        });

这样一个模糊查询就可以使用了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值