AutoCompleteTextView OnItemClick位置始终为"0"

Jen*_*iza 12 android autocomplete

适配器工作正常,但我不明白为什么OnItemClick中的位置始终为"0"

String[] regions = ct.getRegions();
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_dropdown_item_1line, regions);
    regionT.setAdapter(adapter);
    regionT.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            // TODO Auto-generated method stub
                 int pos=position;
        }
    });
Run Code Online (Sandbox Code Playgroud)

Ita*_*tto 32

不要问我为什么,但position方法中的参数OnItemClickListener.onItemClick保存相对于AutoCompleteTextView下拉列表的索引,而不是适配器数组中的位置(在您的情况下regions)!

因此,要查找项目的真实性,position您必须在下拉列表中选择字符串并在适配器数组中找到它的索引:

String[] regions = ct.getRegions();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, regions);
regionT.setAdapter(adapter);
regionT.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        String selected = (String) parent.getItemAtPosition(position);
        int pos = Arrays.asList(regions).indexOf(selected);
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 如果位置始终为0,这假设如何工作?我和原版海报有同样的问题. (3认同)
  • 如果你的 `ArrayAdapter` 类型是一个对象,那就更好了,你可以用 `Object object = (Object) parent.getItemAtPosition(position);` 分配它 (2认同)