1

我尝试了一些变体,其中之一:

tv.addTextChangedListener(new TextWatcher() {
  @Override
  public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {}
  @Override
  public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    tv.showDropDown();
  }
  @Override
  public void afterTextChanged(Editable editable) {}
});

但是,下拉建议会立即显示和隐藏(看起来像眨眼)。有没有办法在编辑文本后显示下拉菜单?

我还添加了一个按钮(用于测试)并添加了一个 onclick 侦听器,它调用tv.showDropDown();方法并且效果很好,正如我所期望的那样(这意味着(恕我直言)BaseAdapter、Filter 等没有问题)。

4

2 回答 2

1

我不认为你必须做这一切..自动完成应该像自动..

就像你必须告诉它它必须用于自动完成的数据一样,你就完成了。你不需要手动做tv.showDropDown()

AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_country);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, COUNTRIES);
textView.setAdapter(adapter);

COUNTRIES字符串数组在哪里

看这里http://developer.android.com/resources/tutorials/views/hello-autocomplete.html

于 2012-06-13T21:11:31.487 回答
1

看@我的回答。当您获得更新的数据时,通过重置文本是非常简单的黑客攻击...

autoRailwayFrom.setText(autoRailwayFrom.getText());

https://stackoverflow.com/a/15044017/1136023

于 2013-02-23T18:32:00.733 回答