File tree Expand file tree Collapse file tree
apps/app/ui-tests-app/list-view
tns-core-modules/ui/list-view Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ import { Page } from "tns-core-modules/ui/page" ;
2+ import { ViewModel } from "./main-view-model" ;
3+
4+ export function pageLoaded ( args ) {
5+ let page = < Page > args . object ;
6+ const viewModel = new ViewModel ( ) ;
7+
8+ page . bindingContext = {
9+ "items" : viewModel . items
10+ }
11+ }
12+
13+ exports . onItemTap = function ( args ) {
14+ const list = args . object ;
15+ let index = args . index ;
16+ let listArray = list . page . bindingContext [ "items" ] ;
17+ let currentItem = listArray . getItem ( index ) ;
18+
19+ currentItem . age = currentItem . age + 1 ;
20+ listArray . setItem ( index , currentItem ) ;
21+ }
Original file line number Diff line number Diff line change 1+ <Page loaded =" pageLoaded" >
2+ <GridLayout id =" grid-layout" >
3+ <ListView id =" lv1" items =" {{ items }}" itemTemplateSelector =" age % 2 === 0 ? 'green':'red'" itemTap =" onItemTap" >
4+ <ListView .itemTemplates>
5+ <template key =" red" >
6+ <Label text =" {{ name + ' ' + id }}" style.backgroundColor=" red" />
7+ </template >
8+ <template key =" green" >
9+ <Label text =" {{ name + ' ' + id }}" style.backgroundColor=" green" />
10+ </template >
11+ </ListView .itemTemplates>
12+ </ListView >
13+ </GridLayout >
14+ </Page >
Original file line number Diff line number Diff line change @@ -13,6 +13,7 @@ export function loadExamples() {
1313 const examples = new Map < string , string > ( ) ;
1414 examples . set ( "list-view-templates" , "list-view/list-view" ) ;
1515 examples . set ( "images-template" , "list-view/images-template" ) ;
16+ examples . set ( "dynamic-templates" , "list-view/dynamic-templates" ) ;
1617 examples . set ( "bindings" , "list-view/listview-binding" ) ;
1718 examples . set ( "listview-bg-separator-color" , "list-view/listview-bg-separator-color" ) ;
1819 examples . set ( "csslv" , "list-view/csslv" ) ;
Original file line number Diff line number Diff line change @@ -4,11 +4,13 @@ import { ObservableArray } from "tns-core-modules/data/observable-array";
44export class Item extends Observable {
55 private _name : string ;
66 private _id : number ;
7+ private _age : number ;
78
8- constructor ( name : string , id : number ) {
9+ constructor ( name : string , id : number , age : number ) {
910 super ( ) ;
1011 this . _name = name ;
1112 this . _id = id ;
13+ this . _age = age ;
1214 }
1315
1416 get name ( ) : string {
@@ -33,6 +35,17 @@ export class Item extends Observable {
3335 }
3436 }
3537
38+ get age ( ) : number {
39+ return this . _age ;
40+ }
41+
42+ set age ( value : number ) {
43+ if ( this . _age !== value ) {
44+ this . _age = value ;
45+ this . notifyPropertyChange ( "age" , value )
46+ }
47+ }
48+
3649 public toString ( ) {
3750 return `${ this . name } ${ this . id } ` ;
3851 }
@@ -44,7 +57,7 @@ export class ViewModel extends Observable {
4457 get items ( ) : ObservableArray < Item > {
4558 this . _items = new ObservableArray < Item > ( ) ;
4659 for ( let i = 0 ; i < 100 ; i ++ ) {
47- this . _items . push ( new Item ( `Item` , i ) ) ;
60+ this . _items . push ( new Item ( `Item` , i , 0 ) ) ;
4861 }
4962 return this . _items ;
5063 }
Original file line number Diff line number Diff line change @@ -66,6 +66,11 @@ export abstract class ListViewBase extends ContainerView implements ListViewDefi
6666 } ) ;
6767 this . _itemTemplateSelector = ( item : any , index : number , items : any ) => {
6868 item [ "$index" ] = index ;
69+
70+ if ( this . _itemTemplateSelectorBindable . bindingContext === item ) {
71+ this . _itemTemplateSelectorBindable . bindingContext = null ;
72+ }
73+
6974 this . _itemTemplateSelectorBindable . bindingContext = item ;
7075 return this . _itemTemplateSelectorBindable . get ( "templateKey" ) ;
7176 } ;
You can’t perform that action at this time.
0 commit comments