6

Ho un requisito per l'implementazione di un testo di modifica che l'utente può digitare in qualsiasi cosa ma quando digita una nuova parola che inizia con '@' dovrebbe iniziare il completamento automatico mostrando potenziali utenti.Android AutoCompleteTextView con '@' cita il filtro come twitter e facebook

Capisco come utilizzare la funzione AutoCompleteTextView per il filtraggio. Ma non sono sicuro di come catturare i personaggi dall'ultima parola dopo il simbolo '@' (ignorando le parole precedenti).

Di conseguenza, quando l'utente è stato selezionato nell'elenco AutoCompleteTextView, deve sostituire la parola con "@", ad es.


"Questo è un messaggio per @steve"


quando l'utente fa clic su "Steve" dalla lista, il testo dovrebbe sostituire a:


"Questo è un messaggio per Steve"


Ho anche bisogno di ottenere la stringa in un modulo che posso inviare al server. cioè dall'esempio precedente avrei bisogno di spedire la stringa:


"Questo è un messaggio per [username: [email protected], id: 44]."


Ho guardato https://github.com/splitwise/TokenAutoComplete

che sembra grande per la digitazione messaggi di posta elettronica in un elenco, ma non sono sicuro come venire incontro è per le mie esigenze. Bare in mente, ho bisogno di supportare più/duplicato menzioni:.

esempio


"Questo è un messaggio per Steve e Bob Questa è la seconda frase nel messaggio per Bob "


Se qualcuno sa o ha fatto qualcosa di simile, sarebbe r lo apprezzo davvero!

risposta

4

Ho finito per utilizzare la libreria di spyglass di linkedin che fa esattamente quello che stavo cercando. Fornisce un MentionsEditText (che può essere personalizzato). Ho anche usato una ListPopupWindow per mostrare i suggerimenti in un elenco (come un AutoCompleteTextView).

Ecco il link ...

https://github.com/linkedin/Spyglass

+0

come ottenere una stringa con questo formato? : "Questo è un messaggio per [nome utente: [email protected], id: 44]." –

+1

@ FlashAsh99 Potresti dirmi come hai sostituito il testo dopo aver usato il cannocchiale – bala

+0

@ FlashAsh99 Anch'io voglio sapere come hai sostituito il testo con lo spyglass – guerrero

3

Il seguente metodo estrarrà parole che iniziano con "@":

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]); 
     } 
    } 
} 

Una volta che hai parole, utilizzare il filtro completo auto e, infine, sostituire il testo utilizzando String.replace.

Problemi correlati