Я хочу отсортировать элементы ListView по названию продукта.У меня есть вектор с именем «data», который является типом класса.
У меня есть класс:
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);
}
};
}
, и я взял специальный адаптер, который расширяет ArrayAdapter<RowData>
.
Мой код сортировки, который я написал в onCreate()
, выглядит следующим образом:
Collections.sort(data, RowData.COMPARE_BY_PRODUCTNAME);
adapter = new CustomAdapter(this, R.layout.list,R.id.title, data);
setListAdapter(adapter);
adapter.notifyDataSetChanged();
Я должен использовать пользовательский адаптер, потому что для отображения цены продукта, а также количества в рукахproduct
данные, являющиеся вектором типа RowData
, которые я получаю после отладки в отсортированном порядке имени продукта, которое я хочу, но при привязке к ListView
оно не отображается в отсортированном порядке.
Я новичок в Android, пожалуйста, помогите мне.
Спасибо Алекс Локвуд, я использую пользовательский адаптер типа ArrayAdaptor<Class>
.
В моем onCreate()
методеЯ реализую метод сортировки, как показано ниже,
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);
В моем customAdaptor
классе я должен переопределить sort
следующим образом:
public void sort(Comparator<? super RowData> comparator) {
// TODO Auto-generated method stub
super.sort(comparator);
}
Пожалуйста, помогите мне, если можетеизмените приведенный выше код или предложите мне свой код.
Заранее спасибо.