【发布时间】:2016-11-01 21:27:57
【问题描述】:
【问题讨论】:
-
如果你不想了解它的工作原理,请使用 Linkedin 的开源库engineering.linkedin.com/android/…
标签: android instagram callouts
【问题讨论】:
标签: android instagram callouts
我猜答案已经在旧帖子中提供了,
听输入。当用户键入一个@,后跟一个 角色,调用你服务器上的一个 url (例如 /user/lookup/?username=joe )路由到一个视图 查找以 joe 开头的用户。将其作为 json 返回并显示 在下拉列表中。
要简单得多,您需要使用@ 作为关键字,用于理解用户名的开头。
例如用户键入以下消息
...在纽约与@nour 在一起
在 Java 中,您可以使用正则表达式检测 @,
boolean foundMatch = false;
Pattern regex = Pattern.compile("\\b(?:@)\\b");
Matcher regexMatcher = regex.matcher(subjectString);
foundMatch = regexMatcher.find();
如果输入字符串有 @ 关键字,这将匹配
现在,一旦您获得@ 关键字,就将@ 之后的所有字符取走,直到您得到一个空格。在此示例中,nour 应该是结果,因为它在 @ 之后开始并在 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 和向他们推送通知。
【讨论】: