ListViewのアイテムを製品名で並べ替える必要があります。私はクラスの一種である "データ"と呼ばれるベクトルを持っています。カスタムアダプタを使用している製品の名前による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
にバインドするとソート順で表示されません。
私はアンドロイドに新しいです。私を助けてください。
ありがとうAlex Lockwood、私はArrayAdaptor<Class>
タイプのカスタムアダプタを使用しています。私は、以下のように私のcustomAdaptor
クラスで
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);
をソートする方法を実現しています私のonCreate()
方法で
、私はこのようなsort
をオーバーライドする必要ができれば、
public void sort(Comparator<? super RowData> comparator) {
// TODO Auto-generated method stub
super.sort(comparator);
}
は私を助けてください上記のコードを変更するか、自分のコードを教えてください。
ありがとうございます。
"CustomAdapter"が通常の配列またはArrayListを表示できることを確認してください。これがうまくいくと、ソートされたデータセットを表示することもできます。 –
新しいアダプタをリストに設定するときに、notifyDataSetChanged()メソッドを使用する必要はありません。 アダプタコードとアクティビティコードを貼り付けてください。 – jeet
ありがとうございます。コードを私に提供してください。同じコードを使用してください。 –