Допустим, я использую следующий адаптер для 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);