【问题标题】:AutoCompleteTextView - Show suggestions after selectionAutoCompleteTextView - 选择后显示建议
【发布时间】:2016-02-29 14:19:22
【问题描述】:

我正在使用 AutoCompleteTextView 来提供地址建议。

我想要做的是当用户输入地址(例如“Ma”)时,建议会显示为“Mary, Madley, Ma...”。

然后,当用户选择其中一个建议时,他会立即获得另一个包含整个地址的建议。

例如:他选择了“玛丽”,然后得到了“玛丽 123,波士顿”、“玛丽 1566,纽约”、“玛丽珍 569,纽约”等建议。

问题是适配器中填写了建议,但未显示。选择后不显示下拉列表。

到目前为止,我的文本观察者被分配给负责建议的 AutoCompleteTextView:

TextWatcher textWatcher = new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }

    @Override
    public void afterTextChanged(Editable s) {

        if(etStreet.isPerformingCompletion())
            return;

        List<String> arrayValues = getValues();

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),
                android.R.layout.simple_dropdown_item_1line, arrayValues);
        etUlica.setAdapter(adapter);

    }
};

我尝试在项目单击、文本更改和所有其他事件上调用 showDropDown(),但它不会显示。它仅在用户在键盘上键入时显示。

【问题讨论】:

  • 不知道它是否有效...尝试在用户通过编写 autocompletetextview.showDropDown(); 完成选择后再次显示建议;
  • @MustanserIqbal 我解释说我在很多地方都试过了,但它仍然不会显示。
  • 我应该可以工作,但在这种情况下它可能不起作用..因为我还没有测试过
  • 那么你必须创建自己的自定义自动完成文本视图。
  • 我可能完全错了,因为我不知道您的下拉菜单是如何工作的。看到适配器不需要通知吗?

标签: android autocompletetextview dropdown


【解决方案1】:

在您的 AutoCompleteTextView.setOnItemClickListener() 中编写以下代码

autoComplete.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            autoComplete.postDelayed(new Runnable() {
                @Override
                public void run() {
                    autoComplete.showDropDown();
                }
            },100);
            autoComplete.setText(autoComplete.getText().toString());
            autoComplete.setSelection(autoComplete.getText().length());

        }
    });

就是这样,它会像魅力一样起作用!!!

这将为您的问题提供提示,根据您的需要和适配器数据进行更改

【讨论】:

  • 是的,它似乎有效,但为什么呢?预计在这 100 毫秒内完成什么操作?如果它真的需要更长的时间,会发生什么?
  • 我发现:Android会在onItemClick之后关闭下拉菜单,所以在那里调用showDropdown是行不通的。我的建议是使用 onDismissListener 在那里初始化下一个建议,而不是使用延迟任意持续时间的任务。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-27
  • 2013-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多