我想参考这个问题,关于如何实现提及功能,但对于 android。
我想知道它在数据库中的具体情况。
我想答案已经在旧帖子中提供了,
听输入。当用户键入@,后跟一个字符时,调用服务器上的一个 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";
当然,用户名需要唯一。
希望能帮助到你。
它主要由 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 并推送通知给他们。