代码之家  ›  专栏  ›  技术社区  ›  Tamir Abutbul AVK

如何在文本开始删除时启用我的搜索方法

  •  2
  • Tamir Abutbul AVK  · 技术社区  · 7 年前

    我使用我的“搜索”方法,根据EditText输入更改过滤recyclerView中的数据,它工作正常,但当文本被删除(部分)时,没有任何内容被过滤。

    我的搜索方法:

    //a method to filter the question list search
    private void searching(){
        search.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int il, int i2) {
            }
            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    
                for (int iterator = 0; iterator < filterForSearch.size(); iterator++) {
                    //if what i searched have a part of question title - do not filter else filter
                    if (!filterForSearch.get(iterator).get("title").toString().contains(search.getText().toString())  ){
                        filterForSearch.remove(iterator);
                    }
                }
                //set the adapter with the data that the user searched
                setQuestionsAdapter(filterForSearch);
                filterForSearch = cloudData;
            }
            @Override
            public void afterTextChanged(Editable editable) {
                // when the user delete his search - show him the questions again
                if(search.getText().toString().equals("")){
                    pullData();
                }
        }
        });
    }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Guy Luz    7 年前

    我觉得你只保存了过滤结果,因此当你删除文本时,你需要过滤的文本就更少了。 如果你是从数据库中筛选得到所有的结果,我建议你用filter搜索每一个文本更改,这样你就可以从你的所有数据库中筛选出来(你不需要一开始就把所有的文本输入到设备中,这是错误的),然后当你更改文本时(也可以删除),你就会得到结果。