我正在尝试使用AutoCompleteTextView从可能很长的候选项目列表中选择一个项目。我可以很好地显示列表,当用户选择其中一个自动完成建议时,我可以得到调用ItemClick。问题是,onItemClick中报告的"职位"是筛选项目下拉列表中的职位,而不是原始候选人列表中的位置。
我需要知道我给ArrayAdapter的原始列表中所选项目的索引,而不是过滤后在下拉列表中的位置。
我尝试将AutoCompleteTextView子类化并重写onCommitCompletion,它应该提供原始列表索引,但在选择项时不会调用它。
我还尝试过对BaseAdapter进行子类化,这样我就可以自己为自动完成列表生成视图,并为每个项目生成带有应用程序对象的setTag,但AutoCompleteTextView不接受setAdapter的BaseAdapter子类。
我不敢相信,如果不完全重写AutoCompleteTextView,就没有办法做到这一点。
希望有人能找到答案!
我不完全确定你会怎么做,但请确保你的适配器正确分配了一个id
,然后在回调中使用该值。
STATE.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long rowId) {
String selection = (String) parent.getItemAtPosition(position);
int pos = -1;
for (int i = 0; i < yourarray.length; i++) {
if (yourarray[i].equals(selection)) {
pos = i;
break;
}
}
System.out.println("Position " + pos); //check it now in Logcat
}
});