【问题标题】:Android AutoCompleteTextView with '@' mentions filtering like twitter and facebook带有“@”的 Android AutoCompleteTextView 提及 twitter 和 facebook 等过滤
【发布时间】:2015-09-13 11:58:58
【问题描述】:

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

我了解如何使用 AutoCompleteTextView 功能进行过滤。但我不确定如何从“@”符号后的最后一个单词中捕获字符(忽略之前的任何单词)。

因此,当用户从 AutoCompleteTextView 列表中被选中时,它应该将单词替换为“@”,例如。


“这是给@steve 的消息”


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


“这是给 Steve 的消息”


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


“这是发给 [username:steve@bloggs.com, id:44] 的消息。”


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

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

例如


“这是给 SteveBob 的消息。这是给 Bob 的消息中的第二句话” em>


如果有人知道或做过类似的事情,将不胜感激!

【问题讨论】:

    标签: android autocompletetextview multiautocompletetextview tokenautocomplete


    【解决方案1】:

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

    这是链接...

    https://github.com/linkedin/Spyglass

    【讨论】:

    • 如何获得这种格式的字符串? : "这是发给 [username:steve@bloggs.com, id:44] 的消息。"
    • @FlashAsh99 你能告诉我在使用 spyglass 后你是如何替换文本的
    • @FlashAsh99 我也想知道你是怎么用望远镜替换文字的
    • @FlashAsh99:现在,git 中的代码当前从原始​​文件中获取用户/城市日期。有没有办法为此加载动态数组?
    • 回答@AnaLlera?
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-03
      • 2017-08-06
      • 1970-01-01
      • 2012-03-20
      • 1970-01-01
      • 1970-01-01
      • 2016-03-20
      • 1970-01-01
      相关资源
      最近更新 更多