Использование настраиваемого адаптера списка с AutoCompleteTextView и сохранение функциональности автоматического завершения при неизменной работе - PullRequest
5 голосов
/ 25 мая 2011

Допустим, я использую следующий адаптер для AutoCompleteTextView:

public class RosterAdapter extends ArrayAdapter<Player> {
...

}

Используется объект с именем Player, где по умолчанию AutoCompleteTextView работает со строкой.

Список отображается нормальнокогда я использую пользовательский, но единственная проблема, с которой я сталкиваюсь, - это когда я начинаю что-то печатать, это не отображает правильные вещи.

Например - если я начну печатать bo, я бы ожидал, что людис именем Bob Henderson, Garry Bobrinski и т. д.

Но возникает тот же список, который, кажется, не имеет значения, что я печатаю - просто случайно появляется.

Могу ли я не использовать пользовательский объект для этой работы?Должен ли я использовать строку для него, чтобы соответствовать записи правильно?Или я каким-то образом могу сказать, чтобы он смотрел на конкретную строку для каждой записи?

* Обновление *

Вот еще немного кода - вот как яустановить пользовательский адаптер RosterAdapter.Это работает, но автозаполнение не работает должным образом.Это почти так, как будто он запутался и не знает, что искать в объекте, чтобы соответствовать набранной строке.

AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_players);
            RosterAdapter adapter = new RosterAdapter(RosterActivity.this, R.layout.roster_row, players);
            textView.setAdapter(adapter);

Это использует универсальный ArrayAdapter, и это прекрасно работает для сопоставления записей:

AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete_players);
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(RosterActivity.this, R.layout.players_autocomplete, players);
            textView.setAdapter(adapter);

1 Ответ

6 голосов
/ 25 мая 2011

Трудно сказать наверняка без какого-либо кода, но я полагаю, что вы, возможно, не реализуете getFilter(), чтобы позволить адаптеру использовать объекты Player в качестве строк.

Пример (несвязанное требование, но требуется тот же фильтр): Как использовать AutoCompleteTextView и заполнить его данными из веб-API?

Есть ещепример здесь: http://www.sacoskun.com/2008/08/autocompletetextview-with-simpleadapter.html

...