如何在Android中为AutocompleteTextView添加监听器?

45
我试图添加一个监听器,以便在自动完成文本视图上选择项目时做出反应...有人能帮忙吗 //phonename是自动完成文本视图
PhoneName.setOnItemSelectedListener(new OnItemSelectedListener() {

            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {
                Toast.makeText(check.this," selected", Toast.LENGTH_LONG).show();

            }

            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub

            }
        });

1
你尝试过使用TextWatcher吗? - ρяσѕρєя K
我正在这里做类似的事情!!!https://dev59.com/Y-o6XIcBkEYKwwoYPR_f - Etienne Lawlor
4个回答

111

尝试这个:

phoneName.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View arg1, int pos,
                long id) {
              Toast.makeText(check.this," selected", Toast.LENGTH_LONG).show();

        }
    });

6
使用这个监听器,如果我有一个包含10个项目的列表,但在输入时自动完成只会产生其中1个项目,当我点击该项目后,pos参数会是整个列表中的索引还是仅显示的索引? - JuiCe
2
@JuiCe 的 pos 变量将会是所展示项目的索引。 - Nishant
6
Toast.makeText(Check.this, adapter.getItem(position).toString(), Toast.LENGTH_SHORT).show(); - Prabs
注意:我必须设置setOnItemSelectedListener才能实现setOnItemClickListener。不确定为什么,但如果只使用setOnItemClickListener,它无法编译。 - Smitty-Werben-Jager-Manjenson
@Prabs 在输入时,一个项目的实际位置将是什么? - Aminul Haque Aome
最佳答案 - Nabin Khatiwada

7

在 Kotlin 中,这将是:

autoCompleteTextView.setOnItemClickListener { _, _, position, _ -> 
    // You can get the label or item that the user clicked:
    val value = adapter.getItem(position) ?: ""
    Toast.makeText(this, value, Toast.LENGTH_LONG).show();
}

我建议您将变量命名以小写字母开头,以避免与类型混淆。

0

有一种更好的方法来获取所选项目的文本

phoneName.doOnTextChanged { text, start, before, count ->
        //do something with "text" variable
    }

0

Kotlin:

    v.autoCompleteTextView.setOnItemClickListener { parent, view, position, id ->
        Toast.makeText(requireContext(),"$position selected",Toast.LENGTH_LONG).show()
    }

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