我在应用程序中实现了一个过滤器类来过滤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();
    }
}

最佳答案

在按搜索关键字过滤之后。您可以检查结果数组的大小。
如果为空,则添加要显示的数据,然后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();
    }
}

10-02 03:53