2011-03-30 60 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

我忘了將結果設置爲適配器的新項目。

相關問題