@@ -82,6 +82,7 @@ export abstract class PagerBase extends ContainerView implements AddChildFromBui
82
82
public circularMode : boolean ;
83
83
public autoPlayDelay : number ;
84
84
public autoPlay : boolean ;
85
+ public preserveIndexOnItemsChange : boolean = false ;
85
86
// This one works along with existing NS property change event system
86
87
public static selectedIndexChangeEvent = 'selectedIndexChange' ;
87
88
public static scrollEvent = 'scroll' ;
@@ -143,10 +144,14 @@ export abstract class PagerBase extends ContainerView implements AddChildFromBui
143
144
if ( value instanceof ObservableArray ) {
144
145
this . mObservableArrayInstance = value as any ;
145
146
this . mObservableArrayInstance . on ( ObservableArray . changeEvent , this . _observableArrayHandler ) ;
147
+ // } else {
148
+ }
149
+ this . refresh ( ) ;
150
+ if ( this . preserveIndexOnItemsChange ) {
151
+ this [ selectedIndexProperty . setNative ] ( this . selectedIndex , false /* disableAnimation */ , true /* requestTransform(Android) */ ) ;
146
152
} else {
147
- this . refresh ( ) ;
153
+ selectedIndexProperty . coerce ( this ) ;
148
154
}
149
- selectedIndexProperty . coerce ( this ) ;
150
155
}
151
156
152
157
getChildView ( index : number ) : View {
@@ -336,22 +341,22 @@ export abstract class PagerBase extends ContainerView implements AddChildFromBui
336
341
return converted ;
337
342
}
338
343
339
- abstract _onItemsChanged ( oldValue : any , newValue : any ) : void ;
344
+ // abstract _onItemsChanged(oldValue: any, newValue: any): void;
340
345
}
341
346
342
347
export class PagerItem extends GridLayout { }
343
348
344
- function onItemsChanged ( pager : PagerBase , oldValue , newValue ) {
345
- if ( oldValue instanceof Observable ) {
346
- removeWeakEventListener ( oldValue , ObservableArray . changeEvent , pager . refresh , pager ) ;
347
- }
349
+ // function onItemsChanged(pager: PagerBase, oldValue, newValue) {
350
+ // if (oldValue instanceof Observable) {
351
+ // removeWeakEventListener(oldValue, ObservableArray.changeEvent, pager.refresh, pager);
352
+ // }
348
353
349
- if ( newValue instanceof Observable && ! ( newValue instanceof ObservableArray ) ) {
350
- addWeakEventListener ( newValue , ObservableArray . changeEvent , pager . refresh , pager ) ;
351
- }
354
+ // if (newValue instanceof Observable && !(newValue instanceof ObservableArray)) {
355
+ // addWeakEventListener(newValue, ObservableArray.changeEvent, pager.refresh, pager);
356
+ // }
352
357
353
- pager . refresh ( ) ;
354
- }
358
+ // // pager.refresh();
359
+ // }
355
360
356
361
function onItemTemplateChanged ( pager : PagerBase , oldValue , newValue ) {
357
362
pager . itemTemplateUpdated ( oldValue , newValue ) ;
@@ -407,8 +412,8 @@ peakingProperty.register(PagerBase);
407
412
408
413
export const itemsProperty = new Property < PagerBase , any > ( {
409
414
name : 'items' ,
410
- affectsLayout : true ,
411
- valueChanged : onItemsChanged
415
+ affectsLayout : true
416
+ // valueChanged: onItemsChanged
412
417
} ) ;
413
418
itemsProperty . register ( PagerBase ) ;
414
419
0 commit comments