过滤Android ListView - 空间角色

时间:2012-02-23 04:57:40

标签: java android listview filter adapter

我想使用listView框并使用适配器EditText功能过滤我的getFilter()。它工作得很好,直到我在文本框中放置一个空格字符。

编辑:这是一个 SimpleAdapter而不是ArrayAdapter

如果我的列表中包含以下字词:{“Apple”,“Banana”,“Red Apple”} 如果我输入“apple”,它将返回包含苹果字样的所有项目(Apple和Red Apple)。 如果我输入“apple”,它将不会返回任何内容。

有什么想法吗?这是代码:

searchBox = (EditText) findViewById(R.id.searchBox);

searchBox.addTextChangedListener(filterTextWatcher);

private TextWatcher filterTextWatcher = new TextWatcher() {

public void onTextChanged(CharSequence s, int start, int before, int count) {
    // TODO Auto-generated method stub          
}

public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
    // TODO Auto-generated method stub          
}

public void afterTextChanged(Editable s) {
    // TODO Auto-generated method stub
    myAdapter.getFilter().filter(s.toString());
}
};

2 个答案:

答案 0 :(得分:2)

尝试使用:

myAdapter.getFilter().filter(s.toString().trim());

答案 1 :(得分:2)

如果SimpleAdapter的过滤功能无法满足您的过滤要求,则需要覆盖SimpleAdapter并实现自己的过滤要求。

这需要大量代码,因为SimpleAdapter中的过滤器正在使用许多私有对象,您需要复制它们。同样适用于ArrayAdapter

幸运的是,其他人(@uʍopǝpısdn)已经进入这个过程,编写代码并将其提供给社区。

您可以找到指向博客here的链接,包括如何使用示例以及here中的代码。

问候。