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



我正在尝试使用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
    } 
}); 

相关内容

  • 没有找到相关文章

最新更新