0

我在使用 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);

在代码中,我在 for 循环中填充了 arrayList。

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

当我在文本视图中键入内容时,这并没有向我显示建议。

但是,当我将任何字符串添加到 for 循环之外的数组列表中时(例如,就在循环之后),我能够看到建议。过去两个小时一直困扰着我。任何建议,将不胜感激。

相信我,我正在输入我在 for 循环中填充的已知文本之一。

谢谢!拉胡尔。

4

2 回答 2

0

不要在forloop之前设置适配器。将所有字符串添加到字符串的 ArrayList 中,然后在 for 循环之后使用:

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

希望这有效。

于 2012-07-29T16:27:22.197 回答
0

将以下行放在 for 循环之后。

suggestionAdapter.notifyDataSetChanged();

将以下行放在第一个代码中。

suggestionAdapter.setNotifyOnChange(true)

更多细节 setNotifyOnChange(boolean) , notifyDataSetChanged()

于 2012-07-29T15:58:40.467 回答