AutoCompleteTextView - 如何确定选择了哪个原始列表项?

时间:2012-03-30 01:36:54

标签: android android-arrayadapter autocompletetextview onitemclick

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

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

我尝试了继承AutoCompleteTextView并重写onCommitCompletion,它应该提供原始列表索引,但是当选择一个项目时它不会被调用。

我还尝试了子类化BaseAdapter,因此我可以自己生成自动完成列表的视图,并为每个项目生成应用程序对象的setTag,但AutoCompleteTextView不接受setAdapter的BaseAdapter子类。

我无法相信在没有完全重写AutoCompleteTextView的情况下,没有办法做到这一点。

希望有人对此有答案!

2 个答案:

答案 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
    } 
});