AutoCompleteTextView - как определить, какой элемент исходного списка был выбран? - PullRequest
0 голосов
/ 30 марта 2012

Я пытаюсь использовать AutoCompleteTextView, чтобы выбрать элемент из потенциально длинного списка элементов-кандидатов. Я могу нормально отобразить список, и я могу получить вызов onItemClick, когда пользователь выбирает одно из предложений автозаполнения. Проблема в том, что «позиция», сообщаемая в onItemClick, - это позиция в раскрывающемся списке отфильтрованных элементов, а НЕ позиция в исходном списке кандидатов.

Мне нужно знать индекс выбранного элемента в исходном списке, который я дал ArrayAdapter, а НЕ в раскрывающемся списке после его фильтрации.

Я попытался создать подкласс AutoCompleteTextView и переопределить onCommitCompletion, который должен дать исходный индекс списка, но он не вызывается при выборе элемента.

Я также попытался создать подкласс BaseAdapter, чтобы самостоятельно создавать представления для списка автозаполнения и setTag с объектом приложения для каждого элемента, но AutoCompleteTextView не будет принимать подкласс BaseAdapter для setAdapter.

Я не могу поверить, что нет способа сделать это без полного переписывания AutoCompleteTextView.

Надеюсь, у кого-то есть ответ на этот вопрос!

Ответы [ 2 ]

0 голосов
/ 13 августа 2015
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
    } 
}); 
0 голосов
/ 18 октября 2012

Я не совсем уверен, как бы вы поступили, но убедитесь, что ваш адаптер правильно назначает id, а затем используйте это значение в обратном вызове.

...