6

У меня есть требование для реализации текста редактирования, который пользователь может ввести в чем угодно, но когда он вводит новое слово, начинающееся с '@', автозаполнение должно начинаться показывая потенциальных пользователей.Android AutoCompleteTextView с '@' упоминает фильтрацию как твиттер и facebook

Я понимаю, как использовать функцию AutoCompleteTextView для фильтрации. Но я не уверен, как перейти к захвату символов из последнего слова после символа «@» (игнорируя любые предыдущие слова).

Следовательно, когда пользователь был выбран из списка автокомплектов, он должен заменить слово «@», например.


"Это сообщение для @steve"


, когда пользователь нажимает на "Steve" из списка, текст должен заменить на:


"Это сообщение для Steve"


Мне также нужно получить строку в форме, которую я могу отправить на сервер. то есть из приведенного выше примера, я должен был бы отослать строку:


«Это сообщение для [имя пользователя: [email protected], ID: 44].»


Я посмотрел на https://github.com/splitwise/TokenAutoComplete

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

например


«Это сообщение для Steve и Боб это второе предложение в сообщении для Боб "


Если кто-нибудь знает или делал что-нибудь подобное, будет г добро пожаловать!

ответ

4

Я закончил использовать библиотеку spyglass от linkedin, которая делает именно то, что я искал. Он предоставляет MentionsEditText (который можно настроить). Я также использовал ListPopupWindow для отображения предложений в списке (например, AutoCompleteTextView).

Вот ссылка ...

https://github.com/linkedin/Spyglass

+0

как получить строку с этим форматом? : «Это сообщение для [имя пользователя: [email protected], id: 44]». –

+1

@ FlashAsh99 Не могли бы вы рассказать, как вы заменили текст после использования spyglass – bala

+0

@ FlashAsh99 Я тоже хочу знать, как вы заменили текст на spyglass – guerrero

3

Следующий метод извлечения слов, начинающихся с «@»:

private void parseText(String text) { 
    String[] words = text.split("[ \\.]"); 
    for (int i = 0; i < words.length; i++) { 
     if (words[i].length() > 0 
       && words[i].charAt(0) == '@') { 
      System.out.println(words[i]); 
     } 
    } 
} 

После того, как у вас есть слова, использовать автоматическое заполнение фильтра и, наконец, заменить текст, используя string.replace.