使用ArrayAdapter和TextWatcher的动态AutocompleteTextView

时间:2011-09-18 11:27:25

标签: android dynamic android-arrayadapter autocompletetextview textwatcher

我正在尝试使用和ArrayAdapter动态更新AutocompleteTextView的列表。为了更新此View,我使用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();
        }
    }

1 个答案:

答案 0 :(得分:3)

在您的源代码中,TextWatcher被提供给AutoCompleteTextView,这是真正的问题。

如果你看一下AutoCompleteTextView源代码,你会发现AutoCompleteTextView有它的 拥有TextWatcher,名为“MyWatcher”。因此,AutoCompleteTextView无法响应您的输入操作。