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.
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
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez un
ArrayAdapter
, vous pouvez appelersort
sur la carte et de passer unComparator
. Comment mettre en œuvre votreComparator
est à vous.Edition I:
Vous ne devriez pas avoir besoin de remplacer
sort
... laArrayAdapter
classe implémente que pour vous. Tout ce que vous devez faire est de créer votre propreComparator
trier le type générique des objets de la façon dont vous souhaitez qu'ils apparaissent. Aussi, si vous triez la liste en cours d'exécution, vous pourriez avoir besoin pour notifier l'application que l'ensemble de données a changé. Votre code doit fonctionner correctement si vous utilisez cette approche.merci Alex Lockwood", maintenant son travail le problème que j'ai rencontrer dans getView() la méthode de là, je suis en mesure de trouver mon Vecteur qui est triée plus tôt, maintenant c'est de travail merci pour votre aide!
plz voir this comment faire pour trier les listview par nom
OriginalL'auteur Alex Lockwood
Si vous voulez trier les paramètres régionaux des Chaînes sensibles à l'utilisation de la Collateur Catégorie par exemple, en allemand: Un, Ä, B
OriginalL'auteur kaubatak