2016-04-27 7 views
0

メッセージのParseクエリがあります。現在、現在のユーザーがフォローしているすべてのメッセージが返されます。Android - Parse Query:ユーザーあたり1オブジェクト制限

ユーザーごとに1つのメッセージに制限することが望ましいので、ユーザーがメッセージを送信すると、古いメッセージが置き換えられます。

ParseQuery<ParseObject> receiver = ParseQuery.getQuery("Messages"); 
     receiver.setCachePolicy(ParseQuery.CachePolicy.CACHE_THEN_NETWORK); 
     receiver.whereEqualTo(ParseConstants.KEY_RECIPIENT_IDS, ParseUser.getCurrentUser().getObjectId()); 

     ParseQuery<ParseObject> sender = ParseQuery.getQuery("Messages"); 
     sender.setCachePolicy(ParseQuery.CachePolicy.CACHE_THEN_NETWORK); 
     sender.whereEqualTo(ParseConstants.KEY_SENDER_NAME, ParseUser.getCurrentUser().getUsername()); 



     List<ParseQuery<ParseObject>> queries = new ArrayList<ParseQuery<ParseObject>>(); 
     queries.add(receiver); 
     queries.add(sender); 

     ParseQuery<ParseObject> mainQuery = ParseQuery.or(queries); 
     mainQuery.findInBackground(new FindCallback<ParseObject>() { 
      public void done(List<ParseObject> messages, ParseException e) { 


       if (e == null) { 

        // We found messages! 
        mMessages = messages; 


        if (isFragmentUIActive()) { 
         if (recyclerView.getAdapter() == null) { 
          recyclerView.setAdapter(new InboxAdapter(recyclerView.getContext(), mMessages, R.layout.message_item)); 
          recyclerView.setHasFixedSize(true); 
          recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 
          recyclerView.setItemAnimator(new DefaultItemAnimator()); 
         } else { 
          // refill the adapter! 
          Log.i("Refill", "todo"); 
         } 

        } 
       } 
      } 
     }); 

答えて

0

使用setLimit(1)

setLimit(int newLimit) : Controls the maximum number of results that are returned.

コード例は:

ParseQuery<ParseObject> receiver = new ParseQuery<ParseObject>(getQuery()); 
receiver.setLimit(1); 

public ParseQuery<T> getQuery() { 
    return query; 
} 
+0

こんにちは、私はエラーを取得します。 "原因:java.lang.IllegalArgumentException: 'OR'クエリのサブクエリに制限がありません" – Loyal

+0

@Loyalは私の編集を確認します – Abdellah

+0

こんにちは、別のエラーが発生します。 「エラー:(149、48)エラー:ParseQueryが見つかりません、適切なコンストラクタ(ParseQuery) コンストラクタParseQuery.ParseQuery(クラス)が適用 (引数の不一致; ParseQueryは、クラスに変換することはできません)ではありません コンストラクタParseQuery.ParseQuery(文字列)は使用できません (引数の不一致; ParseQueryをStringに変換できません) コンストラクタParseQuery.ParseQuery(Builder )は使用できません (引数の不一致; ParseQueryをBuilder に変換できません) – Loyal

関連する問題