2014-09-16 25 views
9

Mój problem jest dość prosty, ale mój kod nie działa. Chcę posortować wynik ParseQuery do ParseQueryAdapter przed wyświetleniem go do ListView.ParseQueryAdapter: sortuj dane po stronie klienta

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() { 
     } 

    }); 

Sprawdziłem w danych debugger jest klasyfikowane przez komparator ... ale nie są aktualizowane w ParseQueryAdapter ... notifyDataSetInvalidated nic nie robić.

Aby uzyskać więcej informacji, początkowo mój problem jest do sortowania zapytanie w polu Wskaźnik:

query.orderByDescending("deal.date"); 

Ale to nie działa zbyt ... więc piszę ręcznego sortowania.

+0

Mam ten sam problem –

+0

nie wiem, czy jest cechą tak w ramach jesteś którym pracujemy, ale na szybkich mógłby zrobić coś takiego jak „zapytania. orderByDescending ("deal.date"); " usign "whereKey: matchesQuery:". – adolfosrs

Odpowiedz

0

Można utworzyć zdarzenie onLoaded i utworzyć indeks sortowania (sort of HashMap)

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

I w funkcji GetItem można mapować dane oparte na indeksie.

Przykład listy odwrotnej kolejności:

@Override 
public ParseObject getItem(int position) { //For descending order 
    return super.getItem(getCount() - position - 1); 
} 
Powiązane problemy