如果与过滤器不匹配,如何添加所有项目?

时间:2016-05-06 10:26:05

标签: android listview listview-filter

我在我的应用程序中实现了一个过滤器类来过滤ListView。现在,当用户输入并且与过滤器不匹配时,我想在expressionlist中添加ListView的所有项目,而不是在空白中显示ListView。 我怎样才能做到这一点?我需要一些帮助。

public void filter(String charText) {
        charText = charText.toLowerCase(Locale.getDefault());
        expressionlist.clear();
        if (charText.length() == 0) {
            expressionlist.addAll(arraylist);
        } else {
            for (Expression wp : arraylist) {
                if (wp.getWord().toLowerCase(Locale.getDefault())
                        .contains(charText)) {
                    expressionlist.add(wp);
                }
            }
        }
        notifyDataSetChanged();
    }
}

2 个答案:

答案 0 :(得分:1)

按搜索关键字过滤后。您可以检查结果数组的大小 如果为空,请添加要显示的数据,然后添加notifyDataSetChanged

public void filter(String charText) {
        charText = charText.toLowerCase(Locale.getDefault());
        expressionlist.clear();
        if (charText.length() == 0) {
            ...
        } else {
            ...
        }

        if(expressionlist.size() == 0){
           // add all items of expressionlist
        }
        notifyDataSetChanged();
    }
}

答案 1 :(得分:0)

public void filterData(String strSearch) {

        strSearch = strSearch.toLowerCase();
        arrList.clear();

        if (strSearch.isEmpty()) {
            arrList.add()//add your main arrmainlist
        } else {

            String usernameArr[] = strSearch.split(" ");

            for (String query : usernameArr) {
                for (upto your arrlist size) {
                    like if (data.getQues().toLowerCase().contains(keyWord.toLowerCase())
                        || data.getAns().toLowerCase().contains(keyWord.toLowerCase())) {
                    if (!tempList.contains(data)) {
                        tempList.add(data);
                    }
                    if (newList.size() > 0) {
                        check your temp list already in your arraylist/hashmap. 

然后添加到主arraylist / hashmap                         }                     }

            }

        }
        notifyDataSetChanged();