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");
}
}
}
}
});
こんにちは、私はエラーを取得します。 "原因:java.lang.IllegalArgumentException: 'OR'クエリのサブクエリに制限がありません" – Loyal
@Loyalは私の編集を確認します – Abdellah
こんにちは、別のエラーが発生します。 「エラー:(149、48)エラー:ParseQueryが見つかりません、適切なコンストラクタ(ParseQuery) コンストラクタParseQuery.ParseQuery(クラス)が適用 (引数の不一致; ParseQueryは、クラスに変換することはできません)ではありません コンストラクタParseQuery.ParseQuery(文字列)は使用できません (引数の不一致; ParseQueryをStringに変換できません) コンストラクタParseQuery.ParseQuery(Builder )は使用できません (引数の不一致; ParseQueryをBuilder に変換できません) –
Loyal