9

我從webservice檢索字符串列表,並且我想將它們列在AutoCompleteTextField上,而不管內置AutoCompleteTextField過濾器。AutoCompleteTextView - 禁用過濾

我該怎麼做?有沒有一種方法可以很容易地禁用它的內部過濾(最好不需要子類化) 我已經將所有的結果加載到ArrayAdapter中,問題在於它們中的一些因爲過濾而不顯示。

如果我要走錯方向,請指向正確的方向。

回答

1

最終我將子類型ArrayAdapter,在「文本更改」事件期間通過忽略它的getFilter方法和製作我的HTTPRequest來禁用濾鏡。

+0

嗨,謝謝阿隆我也有同樣的概率。如果你可以發佈一些相關的代碼,我會很感激你。在此先感謝 –

+0

請添加一些代碼或描述您的解決方案。 我完全停留在此。 –

+0

@Rajivyadav很快會做 –

14

可能@Alon意思是繼承ArrayAdapter,而不是AutoCompleteTextView。在getFilter()方法之一必須返回一個自定義過濾器,根本不執行過濾(在其performFiltering())。可能的表現可能是一個問題 - 因爲theread已經產生。最好的辦法是從TextEdit派生並實現自己的完成彈出窗口。但到目前爲止,這對我來說仍然是太麻煩了。最後,我做了一些如下的事情,它適用於我。任何反饋讚賞。

public class KArrayAdapter<T> 
extends ArrayAdapter<T> 
{ 
    private Filter filter = new KNoFilter(); 
    public List<T> items; 

    @Override 
    public Filter getFilter() { 
     return filter; 
    } 

    public KArrayAdapter(Context context, int textViewResourceId, 
      List<T> objects) { 
     super(context, textViewResourceId, objects); 
     Log.v("Krzys", "Adapter created " + filter); 
     items = objects; 
    } 

    private class KNoFilter extends Filter { 

     @Override 
     protected FilterResults performFiltering(CharSequence arg0) { 
      FilterResults result = new FilterResults(); 
       result.values = items; 
       result.count = items.size(); 
      return result; 
     } 

     @Override 
     protected void publishResults(CharSequence arg0, FilterResults arg1) { 
      notifyDataSetChanged(); 
     } 
    } 
} 

希望它有幫助。

相關問題