2012-07-29 133 views
0

我面臨着一個AutoCompleteTextView奇怪的問題。我的代碼如下,Android:AutocompleteTextView怪異行爲

AutoCompleteTextView searchText = //findView... 
private ArrayList<String> suggestions = null; 
private ArrayAdapter<String> suggestionAdapter = null; 
suggestionAdapter = new ArrayAdapter<String>(this, R.layout.list, suggestions); 
searchText.setAdapter(suggestionAdapter); 

而下來的代碼,我填充arrayList在for循環。

for (int i = 0; i < nl.getLength(); i++) { 
     Element suggestion = (Element)nl.item(i); 
     String name = suggestion.getAttribute("data"); 
     suggestions.add(name); 
    } 

當我在文本視圖中輸入時,這並不顯示給我建議。

但是,當我將任何字符串添加到for循環之外的arraylist(比如,在循環之後)時,我能夠看到建議。它在過去的兩個小時裏一直在竊聽我。任何建議,將不勝感激。

並相信我我輸入了我在for循環中填充的已知文本之一。

Thx! 拉胡爾。

回答

0

不要設置for循環之前的適配器。將所有字符串添加到字符串的ArrayList中,並在for循環之後使用此:

suggestionAdapter = new ArrayAdapter<String>(this, R.layout.list, suggestions); 
AutoCompleteTextView searchText = //findView... 
searchText.setAdapter(suggestionAdapter); 

希望這能起作用。

+0

但這是一個非常明顯的邏輯。如果這是你已經完成的。請發佈完整的活動代碼,或至少提供與AutoCompleteTextView和適配器相關的所有代碼。只是看到代碼流 – 2012-07-29 16:28:51

+0

Thx Archie!你救了我。是的,這是一個明顯的代碼。在我的早期應用程序中,我從不動態設置arrayList。我曾經在代碼的開頭初始化列表,然後將其設置爲適配器。在這個應用程序中,我必須從互聯網上提取一些數據,然後填充列表。 – rahul 2012-07-29 16:52:42

0

在for循環之後放置以下行。

suggestionAdapter.notifyDataSetChanged(); 

把下面的行中的第一個代碼。

suggestionAdapter.setNotifyOnChange(true) 

更多細節 setNotifyOnChange(boolean)notifyDataSetChanged()

+0

是的..試過這個...沒用。 – rahul 2012-07-29 15:59:32