2014-09-16 3 views
9

Моя проблема довольно проста, но мой код не работает. Я хочу сортировать результат ParseQuery в ParseQueryAdapter перед тем, как отобразить его в ListView.ParseQueryAdapter: сортировать данные на стороне клиента

products.addOnQueryLoadListener(new ParseQueryAdapter.OnQueryLoadListener<Product>() { 

     @Override 
     public void onLoaded(List<Product> data, Exception e) { 
      Collections.sort(data, LastDealComparator); 
      products.notifyDataSetInvalidated(); 
     } 

     @Override 
     public void onLoading() { 
     } 

    }); 

Я проверил в данном отладчике отсортирован по Компаратору ... но не обновляется в ParseQueryAdapter ... notifyDataSetInvalidated ничего не делать.

Для получения дополнительной информации, изначально моя проблема заключается в сортировке запроса на поле указателя:

query.orderByDescending("deal.date"); 

Но это не работает слишком ... так что я пишу ручную сортировку.

+0

Есть такую ​​же проблему –

+0

не знает, если есть особенность, как это в рамках вы работаете, но на стриже вы могли бы сделать что-то вроде «запроса. OrderByDescending ("deal.date");» usign "whereKey: matchesQuery:". – adolfosrs

ответ

0

Вы можете создать OnLoaded событие и создать индекс сортировки (вид HashMap)

@Override 
public void onLoaded(List<ParseObject> objects, Exception e) 

И в функции GetItem можно сопоставить данные, основанные на индексе.

Пример список обратного порядка:

@Override 
public ParseObject getItem(int position) { //For descending order 
    return super.getItem(getCount() - position - 1); 
} 
Смежные вопросы