2016-11-29 38 views
0

カスタムアダプターを使用して、アクティビティー内の投稿を表示しています。カスタムアダプターのコンストラクターでは、次のコードを使用してクエリ結果を取得しています。null値の日付を比較する

ParseQuery query = new ParseQuery("Post"); 
query.whereWithinMiles("location_point", my_point, 500); 
query.whereGreaterThan("expire_date", new Date()); 
return query; 

ターゲットある - ポストがもはや有効期限後に表示されなくなるように、ユーザは、各ポストと期限切れ日付を設定することができます。私はexpire_dateの列をと比較して、現在の時刻がで、期限切れであるかどうかをチェックしています。

query.whereGreaterThan("expire_date", new Date());を後で追加しました。以前に作成されたすべての行は、nullの値がexpire_dateの列にあります。

だから私は、クエリを実行するたびに、はEXPIRE_DATE列に日付オブジェクトを持っているすべての行は、条件に応じてチェックされています。期限切れ日列のヌル値の行は、に返されません。

注:expire_date列は必須フィールドではありません(ユーザーは投稿作成中に空白のままにすることもできます)。

はい、有効期限と比較するすべての空の/ nullフィールドのデフォルトの日付を設定できます。しかし、null値を持つすべての行を返すか、または現在の時刻とNULLオブジェクトをwhereGreaterThan条件で比較する方法があるかどうか不思議でしたか?

+1

ORクエリを試しましたか? http://stackoverflow.com/questions/28892973/multiple-combined-or-queries-using-android-parse – nasch

+0

ありがとうございます。私はORクエリを使って仕事をしました。 :) @nasch –

答えて

1
ParseQuery notExpiredPosts = new ParseQuery("Post"); 
query.whereGreaterThan("expire_date", new Date()); 

ParseQuery noExpiredDate = new ParseQuery("Post"); 
query.doesNotExist("expire_date"); 

ParseQuery expiredDateQuery = ParseQuery.or(notExpiredPosts, noExpiredDate); 

ParseQuery query = new ParseQuery("Post"); 
query.whereWithinMiles("location_point", my_point, 500); 
query.whereMatchesKeyInQuery("objectId", "objectId", expiredDateQuery); 
return query; 

[(NotExpiredPost || NoExpiredDate)&(500マイル内location_point)]

これは、あなたが望むものである、そうではありませんか?

希望します。

+0

あなたのコードにいくつかの構文上の変更を提案しました。あなたのガイドラインをありがとう、それは多くの助けになりました! :) –

+0

私はそれが助けてうれしいです。ハッピーコーディング:) –