我有多个查询,以在两个特定用户之间的某个聊天中获取所有消息。我想也可以在for循环中说,仅在用户名等于当前用户时执行操作。我想要这样做是因为,例如,我正在为当前用户创建聊天气泡,并希望来自非当前用户的文本对象说“发件人:第二用户”,而来自当前用户的文本对象要说“来自:当前用户”。我使用for循环的任何内容,即使使用if语句,它也使用if语句的实际逻辑,说是否正确,执行此操作。我该如何解决这个问题?万分感谢!这是我的代码。附言:我知道这不是做到这一点的方法,而只是举一个我希望它如何工作的例子。
ParseQuery<ParseObject> messageList = ParseQuery.getQuery("Messages");
messageList.whereEqualTo("to_user",user.getUsername());
messageList.whereEqualTo("from_user",recipient_Name);
ParseQuery<ParseObject> messageList2 = ParseQuery.getQuery("Messages");
messageList2.whereEqualTo("to_user",recipient_Name);
messageList2.whereEqualTo("from_user",user.getUsername());
List<ParseQuery<ParseObject>> queries = new ArrayList<ParseQuery<ParseObject>>();
queries.add(messageList);
queries.add(messageList2);
ParseQuery<ParseObject> mainQuery = ParseQuery.or(queries);
mainQuery.orderByDescending("createdAt");
mainQuery.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objects, ParseException e) {
// TODO Auto-generated method stub
if(e == null){
for (ParseObject message : objects) {
if(message.get("from_user") == user.getCurrentUser()){
adapter.add("From: Current User");
}else if(message.get("from_user") !=
user.getCurrentUser()){
adapter.add("From: Second User");
}
}
}
adapter.notifyDataSetChanged();
}
});
}
您==
用来比较对象。在Java中这是不行的。
在Java中,应该使用比较对象的equals
方法Object
。
您的代码:
if(message.get("from_user") == user.getCurrentUser()) {
adapter.add("From: Current User");
} else if(message.get("from_user") != user.getCurrentUser()) {
adapter.add("From: Second User");
}
应该更改为:
if(message.get("from_user").equals(user.getCurrentUser())) {
adapter.add("From: Current User");
} else if(message.get("from_user").equals(user.getCurrentUser())) {
adapter.add("From: Second User");
}
请参阅http://www.programmerinterview.com/index.php/java-questions/java-whats-the-difference-between-equals-and/,以了解对equals
vs==
还是对它进行谷歌搜索:-)
另外在一个旁注中:修正问题的格式,如果某人一段时间未评论或回答您的问题,则可能需要重新措辞该问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句