Сортировка 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 .

Мой код сортировки, который я написал в 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 он не отображается в отсортированном порядок.

Я новичок в Android, помогите, пожалуйста.


Спасибо, Алекс Локвуд, я использую специальный адаптер типа ArrayAdaptor .

В моем методе 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 как this,

public void sort(Comparator<? super RowData> comparator) {
    // TODO Auto-generated method stub
    super.sort(comparator);
}

Пожалуйста, помогите мне, если вы можете изменить приведенный выше код или предложить мне свой код.

Заранее спасибо.

7
задан Alex Lockwood 17 December 2014 в 19:49
поделиться