带有'@'的Android AutoCompleteTextView提到了像twitter和facebook这样的过滤

问题描述 投票:6回答:2

我需要实现一个用户可以输入任何内容的编辑文本,但是当他们键入以“@”开头的新单词时,自动完成应该开始显示潜在用户。

我了解如何使用AutoCompleteTextView函数进行过滤。但是我不知道如何从'@'符号后面的最后一个单词中捕获字符(忽略之前的任何单词)。

因此,当从AutoCompleteTextView列表中选择用户时,它应该用'@'替换该单词,例如。


“这是@steve的消息”


当用户点击列表中的“Steve”时,文本应替换为:


“这是给史蒂夫的信息”


我还需要以可以发送到服务器的形式获取字符串。即从上面的例子我需要发送字符串:


“这是[用户名:[email protected],id:44]的消息。”


我看过https://github.com/splitwise/TokenAutoComplete

这似乎很适合在列表中键入电子邮件,但我不知道如何满足我的需求。请记住,我需要支持多个/重复提及:

例如


“这是给史蒂夫和鲍勃的信息。这是鲍勃留言中的第二句话”


如果有人知道或做过这样的事情,我会非常感激!

android autocompletetextview multiautocompletetextview tokenautocomplete
2个回答
4
投票

以下方法将提取以“@”开头的单词:

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替换文本。


3
投票

我最终使用了来自linkedin的spyglass库,它完全符合我的要求。它提供了MentionsEditText(可以自定义)。我还使用ListPopupWindow在列表中显示建议(如AutoCompleteTextView)。

链接在这里...

https://github.com/linkedin/Spyglass

© www.soinside.com 2019 - 2024. All rights reserved.