Android 从onItemClick确定AutoCompleteTextView

Android 从onItemClick确定AutoCompleteTextView,android,textview,Android,Textview,是否可以通过回调函数的参数确定原始的AutoCompleteTextView 我有以下回调函数,如果我单击AutoCompleteTextView的选择弹出窗口中的一项,就会正确触发该函数: public void onItemClick(AdapterView<?> adaptView, View view, int position, long id) { } public void onItemClick(适配器视图适配器视图,视图视图,内部位置, 长id)

是否可以通过回调函数的参数确定原始的AutoCompleteTextView

我有以下回调函数,如果我单击AutoCompleteTextView的选择弹出窗口中的一项,就会正确触发该函数:

public void onItemClick(AdapterView<?> adaptView, View view, int position, 
        long id) {
}
public void onItemClick(适配器视图适配器视图,视图视图,内部位置,
长id){
}

我知道,我可以,但我想确定哪个AutoCompleteTextView仅从回调函数的参数启动单击-这可能吗?

我对这个问题没有肯定的答案(我认为不可能)。但我使用一种变通方法来达到相同的目标(从onItemClick中查找
AutoCompleteTextView
):

我定义了下面的类,它可以用来修改
onItemClick
调用,以提供
AutoCompleteTextView
作为第二个参数(而不是原始的
View
param)

你必须写:

myTextView.setOnItemClickListener(
        new AutoCompleteTextViewClickListener(myTextView, myListener));

现在,只要文本视图触发OnItemClick,就可以使用对AutoCompleteTextView的引用,而不是原始视图值。

如果您想知道AutoCompleteTextView 1和AutoCompleteTextView 2之间的哪个当前ClickedAutoCompleteTextView,只需检查它们的适配器即可

public void onItemClick(AdapterView<?> adaptView, View view, int position, long id) {
    AutoCompleteTextView currentClickedAutoCompleteTextView;
    if( adaptView.getAdapter()==autoCompleteTextView1.getAdapter() )
        currentClickedAutoCompleteTextView = autoCompleteTextView1;
    else
        currentClickedAutoCompleteTextView = autoCompleteTextView2;
}
public void onItemClick(适配器视图适配器视图,视图视图,int位置,长id){
自动完成文本视图当前单击自动完成文本视图;
如果(AdapteView.getAdapter()==autoCompleteTextView1.getAdapter())
currentClickedAutoCompleteTextView=autoCompleteTextView1;
其他的
currentClickedAutoCompleteTextView=autoCompleteTextView2;
}

基于@talklesscodemore的回答,我用这种方式解决了这个问题(我有两个
自动完成文本视图,如果有更多,你必须调整以下内容):

AutoCompleteTextView firstDropdown;
AutoCompleteTextView第二个下拉列表;
...
@凌驾
public void onItemClick(AdapterView AdapterView,视图视图,整型位置,长id){
如果(从第一个下拉列表(adapterView)中选择adapterView){
//第1 ACTV专用代码
}否则{
//第二ACTV专用代码
}
}
私有布尔值IsAdapterViewFromFirst下拉列表(AdapterView AdapterView){
返回adapterView.getAdapter().equals(firstDropdown.getAdapter());
}

我使用了yonoyjoy答案的更简单版本。它只将AutoCompleteTextView传递给构造函数

public class AutoCompleteTextViewClickListener implements AdapterView.OnItemClickListener {
    private AutoCompleteTextView mView;

    public AutoCompleteTextView getView() {
        return mView;
    }

    public AutoCompleteTextViewClickListener(AutoCompleteTextView view) {
        this.mView = view;
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    }
}

你能编辑一下这个问题吗?@josedlujan你是什么意思?我不是母语人士,请随意编辑。如果有问题,我会接受编辑。我指的是AutoCompleteTextView,调用源于。太好了。这帮了大忙!谢谢yonojoy。嗯,我已经编辑了《建设成为公众》。我认为回答第一个问题很清楚。问题需要的是currentAutoCompleteTextView。autoCompleteTextView1和autoCompleteTextView2是已单击的AutoCompleteTextView实例。无论如何,我编辑代码,让你更清楚。
public void onItemClick(AdapterView<?> adaptView, View view, int position, long id) {
    AutoCompleteTextView currentClickedAutoCompleteTextView;
    if( adaptView.getAdapter()==autoCompleteTextView1.getAdapter() )
        currentClickedAutoCompleteTextView = autoCompleteTextView1;
    else
        currentClickedAutoCompleteTextView = autoCompleteTextView2;
}
AutoCompleteTextView firstDropdown;
AutoCompleteTextView secondDropdown;

...

@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
    if (isAdapterViewFromFirstDropdown(adapterView)) {
       // Code specific for 1st ACTV
    } else {
       // Code specific for 2nd ACTV
    }
}

private boolean isAdapterViewFromFirstDropdown(AdapterView<?> adapterView) {
    return adapterView.getAdapter().equals(firstDropdown.getAdapter());
}
public class AutoCompleteTextViewClickListener implements AdapterView.OnItemClickListener {
    private AutoCompleteTextView mView;

    public AutoCompleteTextView getView() {
        return mView;
    }

    public AutoCompleteTextViewClickListener(AutoCompleteTextView view) {
        this.mView = view;
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    }
}
autoCompleteTextView.setOnItemClickListener(new AutoCompleteTextViewClickListener(v){
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        super.onItemClick(parent, view, position, id);
        AutoCompleteTextView v = this.getView();

        //Do stuff.

    }
});