Le tri des ListView par le Nom du Produit à l'aide de la Coutume adaptateur?

Je veux trier les éléments de la liste par nom de produit. J'ai un vecteur appelé "données" qui est un type de classe.

La classe que j'ai est:

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);
        }
    };
}

et j'ai pris un adaptateur personnalisé qui s'étend ArrayAdapter<RowData>.

Mon tri code que j'ai écrit dans onCreate() est comme suit,

Collections.sort(data, RowData.COMPARE_BY_PRODUCTNAME);
adapter = new CustomAdapter(this, R.layout.list,R.id.title, data);

setListAdapter(adapter);
adapter.notifyDataSetChanged();

- Je utiliser un adaptateur car pour afficher le prix du produit ainsi que la quantité en main du produit

les données qui est un vecteur de type RowData je suis arriver après le débogage dans l'ordre de tri de la le Nom du produit que je veux, mais quand se lier à la ListView il n'est pas afficher dans l'ordre de tri.

Je suis nouveau sur android merci de m'aider.


Merci Alex Lockwood, je suis en utilisant la coutume adaptateur de type ArrayAdaptor<Class>.

Dans mon onCreate() méthode que je mets en place une méthode de tri comme le ci-dessous,

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);

Dans mon customAdaptor classe, je dois remplacer sort comme ça,

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

Merci de m'aider si vous pouvez modifier le code ci-dessus ou me suggérer votre code.

Merci d'avance.

Assurez-vous que votre "CustomAdapter" est capable d'afficher un tableau normal ou ArrayList. Lorsque cela fonctionne, vous devez également être en mesure d'afficher un classement de l'ensemble de données.
vous n'avez pas besoin d'utiliser notifyDataSetChanged() la méthode, lors de l'élaboration de la nouvelle carte à la liste. Il suffit de coller votre carte code et code d'activité.
Grâce Copa Pourriez-vous svp me donner le code pour le même ou pourriez-vous s'il vous plaît aidez-moi, en utilisant le code
Grâce jitendra sharma, mais il ne fonctionne pas, même après le retrait de notifyDataSetChanged() la méthode
veuillez utiliser les bons de capitalisation et d'essayer de formater votre code mieux la prochaine fois. les gens sont beaucoup plus enclins à vous aider si votre code est facile à lire :).

OriginalL'auteur Anil Deshmukh | 2012-01-18