2011-03-30 63 views
2

我想要做的就是在AutoCompleteTextView的结果(它是字符串)的每个结果上显示一个CheckBox。android AutoCompleteTextView似乎忽略了自定义ArrayAdapter的筛选器

我写了一个实现Filterable的自定义数组适配器。我添加了一个简单的过滤器,它会被调用(我检查过)并返回预期的结果。但是显示的结果是完全不同的结果。

这是我的过滤器,代码:

private class MyFilter extends Filter 
    { 
     @Override 
     protected FilterResults performFiltering(CharSequence constraint) 
     { 
      FilterResults results = new FilterResults(); 
      if ((constraint == null) || (constraint.length() == 0)) 
      { 
       synchronized (mLock) 
       { 
        ArrayList<String> list = new ArrayList<String>(); 
        results.values = list; 
        results.count = list.size(); 
       } 
      } 
      else 
      { 
       String constr = constraint.toString().toLowerCase(); 
       final ArrayList<String> newItems = new ArrayList<String>(); 
       for (String temp : items) 
       { 
        if (temp.toLowerCase().startsWith((constr))) 
        { 
         newItems.add(temp); 
        } 
       } 
       results.values = newItems; 
       results.count = newItems.size(); 
      } 
      return results; 
     } 

     @Override 
     protected void publishResults(CharSequence constraint, 
       FilterResults results) 
     { 
      if (results.count > 0) 
      { 
       notifyDataSetChanged(); 
      } 
      else 
      { 
       notifyDataSetInvalidated(); 
      } 
     } 
    } 

难道我错过了什么? 谢谢!

+1

我想我们需要看一些代码。是否有可能你正在返回你需要的结果的补充?换句话说,你得到的结果与你想要的完全相反吗? – 2011-03-30 15:53:00

+0

谢谢您的回复!我粘贴了我的过滤代码。不幸的是,过滤器正在返回我想要的项目,所以它可能不是补充。 – ShadowMare 2011-04-04 11:30:20

+1

错误可能在您的适配器中,然后... – 2011-04-04 14:10:39

回答

1

我忘了将结果设置为适配器的新项目。

相关问题