我在单击列表中的值后尝试获取 AutoCompleteTextView 的 ID。尝试在 google 和 stackoverflow 上查找,但提供的答案无效。这是我得到的:
在我的类声明中创建 View :
public class ActivityCadastrarCliente extends Activity implements OnClickListener, OnItemClickListener {
AutoCompleteTextView E_Nome_Cliente, E_CPF;
List<String> Nomes = new ArrayList<String>();
...
将 View 关联到 XML 元素:
E_Nome_Cliente = (AutoCompleteTextView)findViewById(R.id.Nome_Cliente);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, Nomes.toArray(new String[0]));
E_Nome_Cliente.setAdapter(adapter);
E_Nome_Cliente.setOnItemClickListener(this);
我的 onItemClick 方法通常调用如下:
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//switch (parent.getId()) {
//case R.id.Nome_Cliente:
...
//}
}
有人知道如何在 onItemClick 中访问此 View 吗?尝试了几种方法,但我只得到异常(exception):
//Class cast exception
AutoCompleteTextView input = (AutoCompleteTextView)view.getParent();
//Class cast exception
AutoCompleteTextView input = (AutoCompleteTextView)parent;
//Class cast exception
AutoCompleteTextView input = (AutoCompleteTextView)parent.getParent();
我需要确定点击了哪个 View ,因为我使用了 3 到 5 个 AutoCompleteTextView,并且我会根据所选的值自动填写一堆其他字段。
最佳答案
查看 this answer 中的类 AutoCompleteTextViewClickListener
.
按以下方式更改您的 setOnItemClickListener
调用:
E_Nome_Cliente.setOnItemClickListener(
new AutoCompleteTextViewClickListener(E_Nome_Cliente, this));
现在可以通过访问修改后的view参数来获取id了:
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//view had been modified by AutoCompleteTextViewClickListener
//to contain the original AutoCompleteTextView
switch (view.getId()) {
case R.id.Nome_Cliente:
//...
}
}
关于Android:如何在 onItemClick 中获取 AutoCompleteTextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27767251/