Определение токена MultiAutoCompleteTextView

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

Вот немного более конкретный пример:

  1. У меня есть данные следующим образом: a, b, aa, ab, aab, abb, aba, bb
  2. У меня введены следующие токены: aa, bb
  3. Я помещаю курсор между двумя буквами а (т. е. а | а)
  4. Я ввожу букву «б»
  5. Я получаю следующее предложение: ab
  6. Я ожидал предложения для: aba

Надеюсь, я объяснил это достаточно хорошо. Я сделал небольшой пример проекта, не используя никаких причудливых материалов, только значения по умолчанию и простой массив String, и у меня такое же поведение, которое, кажется, согласуется с тем, как документы определяют токены по отношению к положению курсора.

Итак, есть ли надежный способ включить предложения, возвращаемые другим способом, описанным в моем примере? Даже наша система тегов SO работает так.


person Dave    schedule 02.09.2014    source источник


Ответы (1)


Вам необходимо установить собственный MultiAutoCompleteTextView.Tokenizer на вашем MultiAutoCompleteTextView с помощью setTokenizer() функция. Переопределите функции findTokenStart и findTokenEnd, чтобы гарантировать захват всего изменяемого текста.

person Carl Anderson    schedule 06.11.2014