Simon Tenbeitel
Simon Tenbeitel

Reputation: 877

Sort ParseQuery by boolean field

I want to sort my query first if a field is true or false, and then by updatedAt. How do I achieve this on Android with Parse SDK?

My current code is:

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

But I get java.lang.IllegalArgumentException: Unable to sort by key draft.

Upvotes: 0

Views: 587

Answers (2)

Arunkumar MG
Arunkumar MG

Reputation: 466

First parse the query with draft values true with ascending order of updateTime and store the values to an array. After fetching this parse the query with draft values 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));
              }
           }
         }
       });
    }
 }

});

Upvotes: 1

Kumar Divya Rajat
Kumar Divya Rajat

Reputation: 187

Try using

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

instead of orderByDescending.

Upvotes: 0

Related Questions