2014-10-06 61 views
0

我有一個應用程序,您可以在其中可以upvote的東西,類似於Facebook的喜歡或Reddit upvotes。你得到的照片。解析數組[如何防止用戶投票多次]

嗯,我覺得它會很簡單。我在Parse中有一個數組列。對於每一條得到讚揚的消息,用戶的姓名將被添加到該特定帖子行中的數組中。除了我需要阻止用戶投票無數次。這是我在閱讀後嘗試的

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」的數組列。

一勞永逸,我該如何查明用戶是否在特定行的數組中?

http://i.stack.imgur.com/a2AEq.jpg

回答

0

編寫確定用戶是否是你的對象的數組中類似這樣的功能:

public boolean canBeLiked() { 
    String ids = getJSONArray("likedBy").toString(); 
    if (ids.contains(ParseUser.getCurrentUser().getObjectId())) { 
     return true; 
    } 
    return false; 
} 

但更改爲你工作。這個對我有用。獲取ParseObject的JSONArray,將其設置爲字符串,然後在該字符串上調用contains(ParseUser.getCurrent()。getObjectId())。