Android:如何在onItemClick中获取AutoCompleteTextView

时间:2015-01-04 15:47:16

标签: android autocompletetextview

我在单击列表中的值后尝试获取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,并根据所选的值自动填写了一堆其他字段。

4 个答案:

答案 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

    }
}