Android: AutoCompleteTextView с пользовательским адаптером

Я написал собственный класс адаптера, расширяющий BaseAdapter, реализующий Filterable для использования с AutoCompleteTextView. Фильтрация и выбор работает нормально.

Единственная проблема заключается в том, что если щелкнуть элемент из списка, AutoCompleteTextView, кажется, автоматически вызывает адаптеры getItem(int position) метод и устанавливает его текст getItem(position).toString(), Я не хочу, чтобы это поведение, поскольку я использую пользовательские объекты в базовом адаптере, и это приводит к таким строкам, как "ClassName [id=xx, variable1=var1]" положить в TextView.

До сих пор я пытался установить свои собственные OnItemClickListener и OnItemSelectedListener, но, похоже, это только быстро переопределяет вышеуказанную строку набора вместо прямой записи моей пользовательской строки. Как я могу отключить эту строку по умолчанию?

Да, и переопределение метода Objects toString() не вариант в этом случае.

Есть идеи? С уважением, Данижу

2 ответа

Решение
// try this
 autoCompleteText.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> adapterView, View arg1, int position, long arg3) {
                String str = (String) adapterView.getItemAtPosition(position);
                autoCompleteText.setText(str);
            }
        });

У меня была та же проблема, и я решил ее следующим образом:

private AutoCompleteTextView actv;
CustomAdapter adapter = new CustomAdapter(context, resource, data);
    actv.setAdapter(adapter);
    actv.setOnItemClickListener(new AdapterView.OnItemClickListener()
    {
        @Override
        public void onItemClick(AdapterView<?> av, View view, int index, long arg3)
        {
            CustomAdapter adapter = (CustomAdapter)av.getAdapter();
            Pair customObject = (Pair<Integer, String>) adapter.getItemAtPosition(index);
        }
    });

Вы должны создать кастом getItemAtPosition метод внутри вашего CustomAdapter, Таким образом, вам не нужно переопределять getItem(int position) запрошенный AutoCompleteTextView и вы можете использовать вместо getItemAtPosition вернуть желаемое CustomObject,

Другие вопросы по тегам