我想按产品名称对 ListView 的项目进行排序。我有一个名为“数据”的向量,它是一种类类型。
我上的课是:
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();
我必须使用自定义适配器,因为要显示产品的价格以及产品的现有数量
数据类型为向量RowData
我按照我想要的产品名称的排序顺序进行调试后得到的结果,但是当绑定到ListView
它不按排序顺序显示。
我是安卓新手,请帮助我。
谢谢亚历克斯·洛克伍德,我正在使用自定义适配器类型ArrayAdaptor<Class>
.
In my 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);
In my customAdaptor
类,我必须覆盖sort
像这样,
public void sort(Comparator<? super RowData> comparator) {
// TODO Auto-generated method stub
super.sort(comparator);
}
如果您可以修改上述代码或向我建议您的代码,请帮助我。
提前致谢。