2014-09-16 24 views
9

Il mio problema è abbastanza semplice, ma il mio codice non funziona. Voglio ordinare il risultato di un ParseQuery in ParseQueryAdapter prima di visualizzarlo in un ListView.ParseQueryAdapter: ordina i dati sul lato client

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

    }); 

ho controllato i dati debugger è ordinato dal comparatore ... ma non aggiornati nel ParseQueryAdapter ... notifyDataSetInvalidated non fare nulla.

Per informazioni, inizialmente il mio problema è quello di ordinare una query su un campo di puntatore:

query.orderByDescending("deal.date"); 

Ma che non funziona troppo ... quindi scrivo una sorta manuale.

+0

avuto lo stesso problema –

+0

Non so se c'è una caratteristica del genere nel quadro che si sta lavorando con ma su SWIFT si poteva fare qualcosa di simile "query. OrderByDescending ("deal.date");" usa "whereKey: matchesQuery:". – adolfosrs

risposta

0

È possibile creare l'evento onLoaded e creare l'indice sorta (specie di HashMap)

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

E nella funzione getItem è possibile mappare i dati in base all'indice.

Esempio di una lista di ordine inverso:

@Override 
public ParseObject getItem(int position) { //For descending order 
    return super.getItem(getCount() - position - 1); 
} 
Problemi correlati