1

我想参考这个问题,关于如何实现提及功能,但对于 android。

我想知道它在数据库中的具体情况。

4

2 回答 2

2

我想答案已经在旧帖子中提供了,

听输入。当用户键入@,后跟一个字符时,调用服务器上的一个 url(例如 /user/lookup/?username=joe),该 URL 路由到一个查找以 joe 开头的用户的视图。将其作为 json 返回并在下拉列表中显示。

制作要简单得多,您需要使用@关键字来理解用户名的开头。

例如,用户键入以下消息

...在纽约与@nour 在一起

在 Java 中,您可以检测@using 正则表达式,

boolean foundMatch = false;
Pattern regex = Pattern.compile("\\b(?:@)\\b");
Matcher regexMatcher = regex.matcher(subjectString);
foundMatch = regexMatcher.find();

如果输入字符串有@关键字,这将匹配

现在,一旦您获得@关键字,就取走所有字符,@直到您获得一个空格。在这个例子nour中应该是结果,因为它在 a 之后开始@并在 a 之前结束white space

在服务器部分,您可以将识别的名称作为USER_NAME,

SELECT * FROM USERS WHERE USER_NAME = "nour";

当然,用户名需要唯一。

希望能帮助到你。

于 2015-08-08T18:10:13.967 回答
1

它主要由 AutoCompleteTextView 完成并处理关键事件。我写不出这样的代码。我可以给你简单的主要想法。onKeyUp()你通过覆盖方法来听用户点击键盘

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
    switch (keyCode) {
    case KeyEvent.KEYCODE_AT:
        // @ is clicked
        // get the usernames
        return true;
    default:
        return super.onKeyUp(keyCode, event);
    }
}

现在您应该开始从数据库中获取用户名,将它们放在 AutoCompleteTextView 适配器中以根据用户条目进行过滤,当用户选择要提及“或许多”的朋友或某人时,您将它们添加到 ArrayList 并推送通知给他们。

于 2015-08-08T17:56:45.280 回答