具有ArrayAdapter和TextWatcher的动态自动完成文本视图

5
我正在尝试使用ArrayAdapter动态更新AutocompleteTextView列表。为了更新这个视图,我使用TextWatcher来监控AutocompleteTextView中可能发生的任何更改。
问题在于列表根本没有更新,我不明白为什么会这样。我在互联网上找到了几种不同的方法,但是我仍然无法理解为什么这个最简单的方法不起作用。非常感谢您提供任何解释。
目标AVD:Google API级别10,Android 2.3.3
以下是简化后的代码:
public class AutocompleteActivity extends Activity implements TextWatcher {
    ArrayAdapter<String> adapter = null;
    AutoCompleteTextView acTextView = null;
    ArrayList<String> addresses = new ArrayList<String>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.autocompleteview);

        acTextView = (AutoCompleteTextView) findViewById(R.id.autocomplete_address);
        adapter = new ArrayAdapter<String>(this, R.layout.listitem, addresses);
        adapter.setNotifyOnChange(true);
        acTextView.addTextChangedListener(this);
        acTextView.setAdapter(adapter);
    }

    @Override
    public void onTextChanged(CharSequence text, int start, int before, int after) {
        try {
            adapter.add("test");
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }

我正在这里做类似的事情!!! https://dev59.com/Y-o6XIcBkEYKwwoYPR_f - Etienne Lawlor
1个回答

3
在您的源代码中,将TextWatcher提供给AutoCompleteTextView,这是真正的问题。
如果您查看AutoCompleteTextView源代码,您会发现AutoCompleteTextView有自己的TextWatcher,名为"MyWatcher"。因此,AutoCompleteTextView无法响应您的输入操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接