通过布尔字段对ParseQuery进行排序

时间:2015-04-25 10:04:20

标签: android parse-platform

如果字段为true或false,我想首先对查询进行排序,然后按updatedAt排序。如何在Android上使用Parse SDK实现此目的?

我目前的代码是:

mQuery.orderByDescending("draft");
mQuery.addAscendingOrder("updatedAt");

但是我得到java.lang.IllegalArgumentException:无法按键草稿排序。

2 个答案:

答案 0 :(得分:1)

首先使用updateTime的升序顺序解析草稿值为true的查询,并将值存储到数组中。获取后,解析查询的草稿值为false。

ArrayList<ParseObject> result=new ArrayList();
ParseQuery<ParseObject> query = ParseQuery.getQuery("_User");
query.whereEqualTo("draft", true);
query.orderByAscending("updatedAt");
query.findInBackground(new FindCallback<ParseObject>() {
  public void done(List<ParseObject> object, ParseException e) {
    if (object == null) {
      Log.d("score", "The getFirst request failed.");
    } else {
      result=object;
       ParseQuery<ParseObject> query1 = ParseQuery.getQuery("_User");
       query1.whereEqualTo("draft", false);
       query1.orderByAscending("updatedAt");
       query1.findInBackground(new FindCallback<ParseObject>() {
         public void done(List<ParseObject> object, ParseException e) {
           if (object == null) {
              Log.d("score", "The getFirst request failed.");
           } else {
              result=object;
              for(int i=0;i<object.size();i++)
              {
                 result.add(object.get(i));
              }
           }
         }
       });
    }
 }

});

答案 1 :(得分:0)

尝试使用

    mquery.whereEqualTo("True","draft");

而不是orderByDescending。