From ac36729cb78ee8bf932bc5e3b354df478c7f1aae Mon Sep 17 00:00:00 2001 From: Rossen Hristov Date: Mon, 20 Jul 2015 09:13:32 +0300 Subject: [PATCH] The unloaded event of view in the ListView's itemTemplate will now be called when its underlying native view is removed from the visual tree. When this happens is beyond our control. --- CrossPlatformModules.csproj | 12 +++ apps/list-view-demo/another-page.xml | 3 + apps/list-view-demo/app.ts | 3 + apps/list-view-demo/main-page.ts | 87 ++++++++++++++++++++++ apps/list-view-demo/main-page.xml | 15 ++++ apps/list-view-demo/package.json | 2 + apps/tests/ui/list-view/list-view-tests.ts | 40 ++++++++++ ui/list-view/list-view.android.ts | 30 +++++++- ui/list-view/list-view.ios.ts | 8 ++ 9 files changed, 199 insertions(+), 1 deletion(-) create mode 100644 apps/list-view-demo/another-page.xml create mode 100644 apps/list-view-demo/app.ts create mode 100644 apps/list-view-demo/main-page.ts create mode 100644 apps/list-view-demo/main-page.xml create mode 100644 apps/list-view-demo/package.json diff --git a/CrossPlatformModules.csproj b/CrossPlatformModules.csproj index 454f62a88..e12936e20 100644 --- a/CrossPlatformModules.csproj +++ b/CrossPlatformModules.csproj @@ -78,6 +78,9 @@ data-binding.xml + + + main-page.xml @@ -94,6 +97,12 @@ + + Designer + + + Designer + @@ -1675,6 +1684,9 @@ + + PreserveNewest + diff --git a/apps/list-view-demo/another-page.xml b/apps/list-view-demo/another-page.xml new file mode 100644 index 000000000..60b450211 --- /dev/null +++ b/apps/list-view-demo/another-page.xml @@ -0,0 +1,3 @@ + + diff --git a/apps/list-view-demo/app.ts b/apps/list-view-demo/app.ts new file mode 100644 index 000000000..cb572300b --- /dev/null +++ b/apps/list-view-demo/app.ts @@ -0,0 +1,3 @@ +import application = require("application"); +application.mainModule = "main-page"; +application.start(); diff --git a/apps/list-view-demo/main-page.ts b/apps/list-view-demo/main-page.ts new file mode 100644 index 000000000..715473101 --- /dev/null +++ b/apps/list-view-demo/main-page.ts @@ -0,0 +1,87 @@ +import frame = require("ui/frame"); +import observableArray = require("data/observable-array"); + +var loaded = 0; +var unloaded = 0; + +var listView; +var textField; + +export function onNavigatedTo(args) { + print(); +} + +export function onTextFieldLoaded(args) { + textField = args.object; +} + +export function onListViewLoaded(args) { + listView = args.object; + console.log("ListView LOADED."); + print(); + onBind(); +} + +export function onListViewUnloaded(args) { + console.log("ListView UNLOADED."); + print(); +} + +export function onBind() { + var length = textField.text; + console.log("Bind to " + length + " items"); + var items = new observableArray.ObservableArray(); + var i = 0; + for (; i < length; i++) { + items.push("Item " + i); + } + listView.items = items; + print(); +} + +export function onAdd() { + var length = textField.text; + console.log("Add " + length + " items"); + var i = 0; + for (; i < length; i++) { + var newItem = "Item " + (>listView.items).length; + (>listView.items).push(newItem); + } + print(); +} + +export function onRemove(s) { + var length = textField.text; + console.log("Remove " + length + " items"); + var i = 0; + for (; i < length; i++) { + (>listView.items).splice((>listView.items).length - 1); + } + print(); +} + +export function onRefresh() { + console.log("Refresh"); + listView.refresh(); + print(); +} + +export function onNavigate() { + console.log("Navigate"); + frame.topmost().navigate({ moduleName: "./another-page" }); + print(); +} + +export function onViewLoaded(args) { + loaded++; + console.log(args.object.id + args.object._domId + " LOADED"); +} + +export function onViewUnloaded(args) { + unloaded++; + console.log(args.object.id + args.object._domId + " UNLOADED"); +} + +export function print() { + console.log("L/U: " + loaded + "/" + unloaded); +} \ No newline at end of file diff --git a/apps/list-view-demo/main-page.xml b/apps/list-view-demo/main-page.xml new file mode 100644 index 000000000..e62369edd --- /dev/null +++ b/apps/list-view-demo/main-page.xml @@ -0,0 +1,15 @@ + + + +