filter为Android ListView – 空间角色

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

编辑:这是一个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()); } }; 

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

这需要大量代码,因为SimpleAdapter Filter使用了许多私有对象,您需要复制它们。 ArrayAdapter的相同配置

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

您可以在此处find指向博客的链接,包括如何使用示例以及此处的代码。

问候。

试试这个:

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