AutoCompleteTextView предлагает предложение, которое заменит весь контент в представлении. Есть ли класс View
, который предоставляет этот объект на уровне слов? Например, если у меня есть «All work and no pl», тогда я должен быть в состоянии предложить «играть», «пожалуйста» и т. Д., Который завершил бы это слово. Если я выберу «play», он должен стать «All work and no play».AutoCompleteTextView @ уровень слова
ответ
Это возможно с помощью MultiAutoCompleteTextView и пользовательских Tokenizer
Я переориентирован на CommaTokenizer из исходного кода Android, так что любой символ может использоваться для разделения слов в MultiAutoCompleteTextView. Опасайтесь, непроверенный код
public static class CustomTokenizer implements MultiAutoCompleteTextView.Tokenizer {
private final char WHITE_SPACE = ' ';
private final char TOKEN_TERMINATING_CHAR;
private final String TOKEN_TERMINATING_STRING;
public CustomTokenizer(char tokenTerminatingChar) {
TOKEN_TERMINATING_CHAR = tokenTerminatingChar;
if (TOKEN_TERMINATING_CHAR == WHITE_SPACE) {
TOKEN_TERMINATING_STRING = String.valueOf(TOKEN_TERMINATING_CHAR);
} else {
TOKEN_TERMINATING_STRING = String.valueOf(TOKEN_TERMINATING_CHAR) + String.valueOf(WHITE_SPACE);
}
}
@Override
public int findTokenStart(CharSequence text, int cursor) {
int i = cursor;
while (i > 0 && text.charAt(i - 1) != TOKEN_TERMINATING_CHAR) {
i--;
}
while (i < cursor && text.charAt(i) == WHITE_SPACE) {
i++;
}
return i;
}
@Override
public int findTokenEnd(CharSequence text, int cursor) {
int i = cursor;
int len = text.length();
while (i < len) {
if (text.charAt(i) == TOKEN_TERMINATING_CHAR) {
return i;
} else {
i++;
}
}
return len;
}
@Override
public CharSequence terminateToken(CharSequence text) {
int i = text.length();
while (i > 0 && text.charAt(i - 1) == WHITE_SPACE) {
i--;
}
if (i > 0 && text.charAt(i - 1) == TOKEN_TERMINATING_CHAR) {
return text;
} else {
if (text instanceof Spanned) {
SpannableString sp = new SpannableString(text + TOKEN_TERMINATING_STRING);
TextUtils.copySpansFrom((Spanned) text, 0, text.length(),
Object.class, sp, 0);
return sp;
} else {
return text + TOKEN_TERMINATING_STRING;
}
}
}
}
Я думаю, вы можете сделать это с помощью адаптера, который реализует Filterable, путем переопределения метода getFilter() вы можете вернуть собственный фильтр.
В пользовательском Фильтре будет отменен метод с именем performFiltering (префикс CharSequence). префикс параметра был бы «Все работа и нет pl» в вашем примере, вы можете разобрать его и получить «pl», тогда пришло время получить слова соответствия и вернуть их.
В другом переопределенном методе publishResults (ограничение CharSequence, результаты FilterResults) вы можете получить результат запроса и сделать что-то, чтобы обновить интерфейс, например notifyDataSetChanged(), чтобы обновить ListView.
Наконец, вы можете добавить «Все работы и нет» перед «воспроизведением» в OnItemClickListener из AutoCompleteTextView, когда пользователь нажал.
Вот код, как пользовательский адаптер и фильтр в ответе Митхун в:
Android AutoCompleteTextView with Custom Adapter filtering not working
- 1. Autocompletetextview акцентированные слова
- 2. AutoCompleteTextView не слова, комплектующие внутри круглых скобок
- 3. AutoCompleteTextView виджет
- 4. эффективный AutoCompleteTextView
- 5. распознавание голоса, разделяющее слова на уровень фонемы
- 6. Как установить цвет текста каждого слова в AutoCompleteTextView
- 7. Android - использование AutoCompleteTextView для определения слова рядом с `@`
- 8. Пользовательское поведение AutoCompleteTextView
- 9. AutoCompleteTextView или SearchDialog?
- 10. Android AutoCompleteTextView с чипами
- 11. onLongClick AutoCompleteTextView
- 12. AutoCompleteTextView прослушиватели
- 13. Адаптер AutoCompleteTextView, «скрытый» адаптер?
- 14. Как заполнить AutoCompleteTextView в Sqlite Databse
- 15. Android AutoCompleteTextView для упоминания людей
- 16. AutoCompleteTextView над MapsFragment
- 17. Может кто-нибудь объяснить эти слова. Уровень представления. Уровень бизнеса. Уровень интеграции в java EE с примером?
- 18. Получить информацию об AutocompleteTextView из полученного AutoCompleteTextView $ DropDownListView
- 19. Android AutoCompleteTextView возвращает неверную строку
- 20. AutoCompleteTextView, который запускается на «@»
- 21. autocompletetextview не работает
- 22. AutoCompleteTextView Text Filtering
- 23. Показать предложения AutoCompleteTextView
- 24. AutoCompleteTextView over the keyboard
- 25. AutocompleteTextView (Ошибки были неправильными)
- 26. AutoCompleteTextView с данными MySQL
- 27. AutoCompleteTextView in android
- 28. Раскрывающееся содержимое AutoCompleteTextView
- 29. AutocompleteTextview и CompletionHintView
- 30. AutoCompleteTextView - отключить фильтрацию
Спасибо за предложение Jared. Я думал, что забыл, что портной сделал это! –