2017-12-04 1 views
0

Wir versuchen, eine ArrayList zu sortieren, die Daten von SQLite-Datenbank enthält. Ich kann die Liste mit dieser hinzugefügt, die Abfrage "ORDER BY" + Col_IDBG + "DESC Was funktioniert wie gewünscht, außer die Positionsdaten in der RecyclerAdapter ist nicht synchron mit der DESC Bestellung. Also als nächstes verwendeten wir Collections.reverse (DBListe), die aber wieder einmal die RecyclerAdapter funktioniert, ist nicht synchron mit der umgekehrten Reihenfolgediffutil sort arrayadapter position

wir das Problem auf die RecylerAdapter Code unten verengt haben Wir würden gerne wissen, wie DiffUtil zu verwenden, um die Position synchron zu halten.. mit der Sortiermethode?

public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 

    public TextView station; 
    public TextView rowid; 

    public ViewHolder(View itemLayoutView) { 
     super(itemLayoutView); 
     rowid = (TextView) itemLayoutView.findViewById(R.id.rvROWID); 
     station = (TextView)itemLayoutView.findViewById(R.id.rvWEBSITE); 
     // Attach a click listener to the entire row view 
     itemLayoutView.setOnClickListener(this); 
    } 

    @Override // When an item in ListActivity is touched (selected) the RecyclerView has 
    // a OnClickListener attached in the above Code that implements the method below 
    public void onClick(View v) { 
     Intent intentN = new Intent(context,BuyGasDetailActivity.class); 
     Bundle extras = new Bundle(); 
     extras.putInt("POSITION",getAdapterPosition()); 
     extras.putString("FROM_LIST_ACTIVITY","false"); 
     intentN.putExtras(extras); 
     context.startActivity(intentN); 
    } 
} 

Die Position wird an DetailActivity übergeben, um alle mit dem Element in th verbundenen Daten anzuzeigen e ListActivity mit dem intentN

+0

I Es tut mir leid, Ihre Frage ist unklar, fragen Sie, wie Sie ein DiffUtils für Ihren Adapter implementieren? –

+0

@MohamedHamdaoui Ja, wir möchten DiffUtil verwenden, um die Position synchron mit der dbList zu halten. ODER eine andere Methode, um zuzulassen, dass die dbList in der DESC-Reihenfolge ist Das Problem ist, wenn die dbList in der DESC-Reihenfolge ist das ausgewählte Element ist das falsche Element –

+0

Verändert sich die Reihenfolge der Elemente in Ihrer Datenbank während der Laufzeit? –

Antwort

1

Dies ist einfach zu lösen Sie müssen nur die Collections.reverse (dbList); An zwei Stellen ist der RecyclerAdapter und die DetailActivity Hier ist der Code in den RecyclerAdapter

@Override 
public int getItemCount() { 
    Collections.reverse(dbList); 
    return dbList.size(); 
} 

und hier ist der Code in der DetailActivity innerhalb der onCreate Methode

dbList = helper.getDataFrom_BUY_GAS_TABLE(); 
    Collections.reverse(dbList); 

Getestet und funktioniert super