2009-07-28 4 views
1

배열 컬렉션에 100 개로 제한하고 싶습니다. 반환 값이있는 필터 함수를 설정해 보았습니다.배열 컬렉션의 값 제한

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

하지만 값은 항상 -1입니다. 아이템이 분명히 있더라도 어떤 이유로 든 아이템을 찾을 수 없습니다. 나는 잠시 동안 루프를 함께 할 수 있어요

:

동안 (myAC.length> 100) myAC.removeItemAt (100);

이렇게 할 수있는 다른 방법이 있습니까? 감사!

답변

4

흠, 내가 생각할 수있는 가장 좋은 방법은 다음과 같습니다 물론

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

, 당신은 ArrayCollection가 처음 구성 될 때, 즉 더 나은 것 크기를 제어 할 수 있다면.

개체의 source 속성을 직접 조작 할 수 없습니다. ArrayCollectionsource 속성의 문서에서 :

ArrayCollection 내의 데이터의 소스입니다. ArrayCollection 객체는 소스 배열에 직접 변경 한 내용을 나타내지 않습니다. 항상 ICollectionView 또는 IList 메서드를 사용하여 컬렉션을 수정하십시오. 이 같은

2

시도 뭔가 :

myAc = 새로운 ArrayCollection에 (myAC.source.slice (0100));

코드의 첫 번째 줄에, 당신의 ">"해야한다 "<"이 때문에

1

먼저 테스트하지 않았다. 처음 100 개의 항목을 버리고 저장하지 않으려합니다. 배열 컬렉션을 필터링 할 때 getItemIndex가 변경되기 때문에 필터링이 깨질 것입니다. 항상 시작 부분을 버리므로 아무 것도 들어갈 수 없습니다.

확실하지,하지만 그것은 시작

내가 옵션 컴파일러 인수로 제한됩니다라는 클래스 LimitedArrayCollection에있는 ArrayCollection을 포장 할
0

입니다. 그런 다음 이러한 종류의 기능에 영향을주는 적절한 공용 메소드 (addItem 등)를 대체하십시오. 이것은 개발 및 재사용 관점에서 훨씬 더 깔끔해질 것입니다. 필터 나 기타 영리한 접근법을 사용하려고 할 때 필연적으로 직면 할 모호성을 제거합니다.