Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 解析数组[如何防止用户多次投票]_Android_Arrays_Parse Platform - Fatal编程技术网

Android 解析数组[如何防止用户多次投票]

Android 解析数组[如何防止用户多次投票],android,arrays,parse-platform,Android,Arrays,Parse Platform,我有一个应用程序,你可以向上投票,类似于Facebook喜欢或Reddit向上投票。你明白了 嗯,我想这很简单。我在Parse中有一个数组列。对于每一条获得upvote的消息,都会将用户名添加到该特定帖子行的数组中。除非我需要阻止用户无限次地投票。这是我读过之后试过的 final ParseQuery<ParseObject> query3 = ParseQuery.getQuery("Messages"); query3.whereContains("obj

我有一个应用程序,你可以向上投票,类似于Facebook喜欢或Reddit向上投票。你明白了

嗯,我想这很简单。我在Parse中有一个数组列。对于每一条获得upvote的消息,都会将用户名添加到该特定帖子行的数组中。除非我需要阻止用户无限次地投票。这是我读过之后试过的

final ParseQuery<ParseObject> query3 = ParseQuery.getQuery("Messages");
            query3.whereContains("objectId", objectId);
            query3.whereContains("PostVoteUsers", mCurrentUser.getUsername());
            query3.findInBackground(new FindCallback<ParseObject>() {
                List<String> list11 =  new ArrayList<String>();

                public void done(List<ParseObject> messages, ParseException e) {
                if (e == null) {

                  ParseObject p = messages.get(0);
                  if(p.getList("PostVoteUsers").contains(mCurrentUser.getUsername())==false)
                    list11 = p.getList("ParseVoteUsers");

                    if(list11.contains(mCurrentUser.getUsername()))
                uparrow.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View v) {

                ParseQuery<ParseObject> query2 = ParseQuery.getQuery("Messages");
                query2.getInBackground(objectId, new GetCallback<ParseObject>() {
                  public void done(ParseObject messages, ParseException e) {
                    if (e == null) {

                        int votes = messages.getInt("PostVotes") + 1;

                        messages.add("PostVoteUsers", mCurrentUser.getUsername());
                        messages.put("PostVotes", votes);

                        postvote.setText("" + votes);

                        messages.saveInBackground();

                    }
                   }
                  });


                }
            });
                }}});
它不起作用。我尝试的每件事都会得到一个空指针异常。我也试过其他一些方法,但我想我可能是看错了问题

在类Messages中,我有一个名为PostVoteUsers的数组列

一劳永逸地说,我怎样才能知道用户是否在特定行的数组中


编写一个函数,确定用户是否在对象的数组中,如下所示:

public boolean canBeLiked() {
    String ids = getJSONArray("likedBy").toString();
    if (ids.contains(ParseUser.getCurrentUser().getObjectId())) {
        return true;
    }
    return false;
}
但是改变它,为你工作。它对我有用。获取ParseObject的JSONArray,将其设置为字符串,然后对该字符串调用containsParseUser.getCurrent.getObjectId