我正在尝试使用AutoCompleteTextView从可能很长的候选项列表中选择一个项目。我可以很好地显示列表,当用户选择其中一个自动完成建议时,我可以调用onItemClick。问题是,"位置" onItemClick中报告的是过滤项目下拉列表中的位置,而不是原始候选列表中的位置。
我需要知道我给ArrayAdapter的原始列表中所选项目的索引,而不是在过滤后的下拉列表中的位置。
我尝试了继承AutoCompleteTextView并重写onCommitCompletion,它应该提供原始列表索引,但是当选择一个项目时它不会被调用。
我还尝试了子类化BaseAdapter,因此我可以自己生成自动完成列表的视图,并为每个项目生成应用程序对象的setTag,但AutoCompleteTextView不接受setAdapter的BaseAdapter子类。
我无法相信在没有完全重写AutoCompleteTextView的情况下,没有办法做到这一点。
希望有人对此有答案!
答案 0 :(得分:0)
我不完全确定你会怎么做,但要确保你的适配器正确分配id
,然后在回调中使用该值。
答案 1 :(得分:0)
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
}
});