Quiero ordenar elementos de ListView por nombre de producto. Tengo un vector llamado "datos" que es un tipo de clase.Clasificación de ListView por nombre del producto con adaptador personalizado?
La clase que tengo es:
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);
}
};
}
y he tomado un adaptador personalizado que se extiende ArrayAdapter<RowData>
.
Mi código de clasificación que he escrito en onCreate()
es el siguiente,
Collections.sort(data, RowData.COMPARE_BY_PRODUCTNAME);
adapter = new CustomAdapter(this, R.layout.list,R.id.title, data);
setListAdapter(adapter);
adapter.notifyDataSetChanged();
Tengo que usar un adaptador personalizado debido a la demostración del precio del producto, así como la cantidad en la mano del producto
los datos que es un vector de tipo RowData
que estoy recibiendo después de la depuración en orden ordenado del nombre del producto que quiero, pero cuando se unen a la ListView
no se muestra en orden ordenado.
Soy nuevo en android, por favor ayúdame.
Gracias Alex Lockwood, estoy usando adaptador personalizado de tipo ArrayAdaptor<Class>
.
En mi método onCreate()
Me estoy poniendo en práctica método de clasificación como el siguiente,
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);
En mi clase customAdaptor
, tengo que anular sort
como este,
public void sort(Comparator<? super RowData> comparator) {
// TODO Auto-generated method stub
super.sort(comparator);
}
Por favor, ayúdame si puedes modifique el código anterior o sugiérame su código.
Gracias de antemano.
Asegúrese de que su "CustomAdapter" pueda mostrar una matriz normal o ArrayList. Cuando esto funcione, también debería poder mostrar un conjunto de datos ordenados. –
no necesita utilizar el método notifyDataSetChanged(), cuando está configurando un nuevo adaptador para la lista. Simplemente pegue el código del adaptador y el código de actividad. – jeet
Gracias Copa ¿Podría proporcionarme el código para el mismo o podría ayudarme a usar el código –