Desidero ordinare gli elementi di ListView in base al nome del prodotto. Ho un vettore chiamato "data" che è un tipo di classe.Ordinamento di ListView in base al nome del prodotto utilizzando l'adattatore personalizzato?
La classe che ho è:
public static class RowData implements Comparable<RowData>{
public String mProductName;
protected int mId;
protected int mOnHand;
protected double mPrice;
protected boolean mIsColleaction;
protected boolean mIsPrePack;
RowData(int id ,String productName,int onhand,double price,boolean IsColleaction, boolean IsPrePack) {
mId= id;
mProductName= productName;
mOnHand =onhand;
mPrice = price;
mIsColleaction =IsColleaction;
mIsPrePack = IsPrePack;
}
@Override
public String toString() {
return mProductName;
}
public int compareTo(RowData other) {
return mProductName.compareTo(other.mProductName);
}
public static Comparator<RowData> COMPARE_BY_PRODUCTNAME = new Comparator<RowData>() {
public int compare(RowData one, RowData other) {
return one.mProductName.compareTo(other.mProductName);
}
};
}
e ho preso un adattatore personalizzato che si estende ArrayAdapter<RowData>
.
Il mio codice di smistamento ho scritto in onCreate()
è il seguente,
Collections.sort(data, RowData.COMPARE_BY_PRODUCTNAME);
adapter = new CustomAdapter(this, R.layout.list,R.id.title, data);
setListAdapter(adapter);
adapter.notifyDataSetChanged();
devo usare un adattatore personalizzato a causa di mostrare prezzo del prodotto così come la quantità in mano del prodotto
il dato che è un vettore di tipo RowData
che ottengo dopo il debug nell'ordine ordinato del nome del prodotto che desidero ma quando si associa allo ListView
non viene visualizzato nell'ordine ordinato.
Sono nuovo ad Android, per favore aiutatemi.
Grazie Alex Lockwood, sto usando adattatore personalizzato di tipo ArrayAdaptor<Class>
.
Nel mio metodo onCreate()
Io sono l'attuazione metodo di ordinamento come il sotto,
adapter = new CustomAdapter(this, R.layout.list,R.id.title, data);
adapter.sort(new Comparator<RowData>() {
public int compare(RowData arg0, RowData arg1) {
return arg0.mProductName.compareTo(arg1.mProductName);
}
});
setListAdapter(adapter);
Nella mia classe customAdaptor
, devo ignorare sort
come questo,
public void sort(Comparator<? super RowData> comparator) {
// TODO Auto-generated method stub
super.sort(comparator);
}
ti prego, aiutami se puoi modificare il codice sopra o suggerirmi il tuo codice.
Grazie in anticipo.
Assicurarsi che il "CustomAdapter" sia in grado di visualizzare un array normale o ArrayList. Quando funziona, dovresti anche essere in grado di visualizzare un set di dati ordinato. –
non è necessario utilizzare il metodo notifyDataSetChanged(), quando si imposta il nuovo adattatore da elencare. Basta incollare il codice dell'adattatore e il codice attività. – jeet
Grazie Copa Potresti fornirmi il codice per lo stesso o per favore aiutami usando il codice –