Parse.com-Android:如果用户属于数组,则启用布尔值

Parse.com-Android:如果用户属于数组,则启用布尔值,android,arraylist,parse-platform,Android,Arraylist,Parse Platform,我在一个类中的“likers”列下有一个用户数组 我想在最短的时间内检查当前用户是否包含在likers数组中 这是我当前的(功能失调)代码: arraylistlikers=(ArrayList)rating.get(“likers”); Boolean contained=likers.contains(ParseUser.getCurrentUser())//始终返回false 我怎样才能改变它使它工作?我觉得这是对ObjectId的匹配。也许Parse SDK中有一个函数 谢谢 您可以使

我在一个类中的“likers”列下有一个用户数组 我想在最短的时间内检查当前用户是否包含在likers数组中 这是我当前的(功能失调)代码:

arraylistlikers=(ArrayList)rating.get(“likers”);
Boolean contained=likers.contains(ParseUser.getCurrentUser())//始终返回false
我怎样才能改变它使它工作?我觉得这是对
ObjectId
的匹配。也许Parse SDK中有一个函数


谢谢

您可以使用下一种方法

    ParseObject rating = ParseObject.create(ParseObject.class);
    ArrayList<ParseUser> likers = (ArrayList<ParseUser>) rating.get("likers");
    Boolean contained = containsUser(likers, ParseUser.getCurrentUser());
ParseObject rating=ParseObject.create(ParseObject.class);
ArrayList likers=(ArrayList)rating.get(“likers”);
Boolean contained=containersuser(likers,ParseUser.getCurrentUser());
方法

private boolean containsUser(List<ParseUser> list, ParseUser user) {
    for (ParseUser parseUser : list) {
        if (parseUser.hasSameId(user)) return true;
    }
    return false;

}
private boolean containersuser(列表,ParseUser){
for(ParseUser ParseUser:list){
if(parseUser.hasSameId(user))返回true;
}
返回false;
}
关于你的代码。它工作正常,返回false。因为ArrayList实现了List接口。如果查看contains方法中的javadocforlist,您将看到它使用该方法来计算两个对象是否相同。rating.get(“likers”)的结果包含与ParseUser.getCurrentUser相同的ParseUsers,但它们在内存中是不同的对象。所以您需要通过比较Parse.com中的ObjectId来找到它

private boolean containsUser(List<ParseUser> list, ParseUser user) {
    for (ParseUser parseUser : list) {
        if (parseUser.hasSameId(user)) return true;
    }
    return false;

}