我在单击列表中的值后尝试获取AutoCompleteTextView的ID。试着查看谷歌和stackoverflow,但提供的答案并没有奏效。这就是我所拥有的:
在我的班级声明中创建了视图:
public class ActivityCadastrarCliente extends Activity implements OnClickListener, OnItemClickListener {
AutoCompleteTextView E_Nome_Cliente, E_CPF;
List<String> Nomes = new ArrayList<String>();
...
将视图与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中访问此视图吗?试过几种方法,但我只得到例外:
//Class cast exception
AutoCompleteTextView input = (AutoCompleteTextView)view.getParent();
//Class cast exception
AutoCompleteTextView input = (AutoCompleteTextView)parent;
//Class cast exception
AutoCompleteTextView input = (AutoCompleteTextView)parent.getParent();
我需要确定点击了哪个视图,因为我使用了3到5个AutoCompleteTextView,并根据所选的值自动填写了一堆其他字段。
答案 0 :(得分:2)
查看this answer中的课程AutoCompleteTextViewClickListener
。
按以下方式更改setOnItemClickListener
来电:
E_Nome_Cliente.setOnItemClickListener(
new AutoCompleteTextViewClickListener(E_Nome_Cliente, this));
现在您可以通过访问修改后的视图参数来获取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:
//...
}
}
答案 1 :(得分:0)
我不确定view id是什么意思?你想获得选定的价值吗? 如果是,则以下代码将执行此操作,否则请详细说明您需要什么以及为什么要访问视图本身。
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//switch (parent.getId()) {
String selected = adapter.getItem(position);
//}
}
有关适配器方法的更多信息,请here
答案 2 :(得分:0)
在parent.findViewById(R.id.id_of_autocompleteTextView)
的父级上使用AutoCompleteTextView
。
答案 3 :(得分:0)
一种更简单的方法:
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Adapter adapter = parent.getAdapter();
if (adapter == autoCompleteTextView1.getAdapter()) {
// Do something
} else if (adapter == autoCompleteTextView2.getAdapter()) {
// Do something else
}
}