Android 从onItemClick确定AutoCompleteTextView
是否可以通过回调函数的参数确定原始的AutoCompleteTextView 我有以下回调函数,如果我单击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)
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.
}
});