2009-07-28 6 views
1

J'ai une collection de tableaux que je voudrais limiter à 100 items. J'ai essayé de mettre en place une fonction de filtre où le retour était:Limitation des valeurs dans une collection de tableaux

return (myAC.getItemIndex (item)> 100);

mais la valeur était toujours -1. Pour une raison quelconque, il n'a pas pu trouver l'objet, même si l'objet est définitivement là.

Je suis en mesure de le faire avec une boucle while:

while (myAC.length> 100) myAC.removeItemAt (100);

Existe-t-il un autre moyen d'y parvenir? Merci!

Répondre

4

Hmm, la meilleure façon que je peux penser est:

myAC = new ArrayCollection(myAC.toArray().slice(0,100)); 

Bien sûr, si vous pouviez contrôler la taille lorsque le ArrayCollection construit tout d'abord, ce serait mieux.

Notez que vous ne pouvez pas manipuler directement la propriété source de l'objet. A partir de la documentation de la propriété source de ArrayCollection:

La source de données dans le ArrayCollection. L'objet ArrayCollection ne représente aucune modification que vous apportez directement au tableau source. Utilisez toujours les méthodes ICollectionView ou IList pour modifier la collection.

2

Essayez quelque chose comme ceci:

myAc = new ArrayCollection (myAC.source.slice (0100));

n'a pas testé ce si

1

D'abord, votre « > » devrait être « < » dans votre première ligne de code. Vous voulez GARDER les 100 premiers éléments, ne pas les jeter. Je serais prêt à parier que le filtrage se casse car getItemIndex change lorsque vous filtrez la collection de tableaux. Puisque vous êtes toujours en train d'abandonner la partie débutante, rien ne peut jamais y être.

Je ne sais pas, mais il est un début

0

J'enveloppez ArrayCollection dans une classe appelée LimitedArrayCollection qui prend la limite comme un argument de compilateur en option. Puis remplacez les méthodes publiques appropriées (addItem, etc) qui affecteraient ce genre de fonctionnalité. Cela va être beaucoup plus propre du point de vue du développement et de la réutilisation. Il supprimera toute ambiguïté que vous allez inévitablement rencontrer en essayant d'utiliser des filtres ou d'autres approches intelligentes.

Questions connexes