0

我正在尝试使用 AutoCompleteTextView 从可能很长的候选项目列表中选择一个项目。我可以很好地显示列表,并且当用户选择自动完成建议之一时,我可以调用 onItemClick。问题是,onItemClick 中报告的“位置”是过滤项目下拉列表中的位置,而不是原始候选列表中的位置。

我需要知道我提供给 ArrayAdapter 的原始列表中所选项目的索引,而不是过滤后下拉列表中的位置。

我尝试继承 AutoCompleteTextView 并覆盖 onCommitCompletion,它应该提供原始列表索引,但在选择项目时不会调用它。

我还尝试对 BaseAdapter 进行子类化,这样我就可以自己生成自动完成列表的视图,并为每个项目生成带有应用程序对象的 setTag,但 AutoCompleteTextView 不会接受 setAdapter 的 BaseAdapter 子类。

我不敢相信如果不完全重写 AutoCompleteTextView 就没有办法做到这一点。

希望有人对此有答案!

4

2 回答 2

0

我不完全确定您将如何处理,但请确保您的适配器id正确分配了一个,然后在回调中使用该值。

于 2012-10-18T16:32:33.797 回答
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
    } 
}); 
于 2015-08-13T11:29:13.053 回答