diff --git a/CrossPlatformModules.csproj b/CrossPlatformModules.csproj
index eba42a20f..a2e24d433 100644
--- a/CrossPlatformModules.csproj
+++ b/CrossPlatformModules.csproj
@@ -60,6 +60,11 @@
+
+
+ main-page.xml
+
+
main-page.xml
@@ -493,6 +498,9 @@
+
+ Designer
+
@@ -1381,6 +1389,7 @@
+
@@ -1458,7 +1467,7 @@
False
-
+
-
+
\ No newline at end of file
diff --git a/apps/pickers-demo/app.ts b/apps/pickers-demo/app.ts
new file mode 100644
index 000000000..0f172a73b
--- /dev/null
+++ b/apps/pickers-demo/app.ts
@@ -0,0 +1,3 @@
+import application = require("application");
+application.mainModule = "app/main-page";
+application.start();
\ No newline at end of file
diff --git a/apps/pickers-demo/main-page.ts b/apps/pickers-demo/main-page.ts
new file mode 100644
index 000000000..0affea7de
--- /dev/null
+++ b/apps/pickers-demo/main-page.ts
@@ -0,0 +1,33 @@
+import observableModule = require("data/observable");
+import pagesModule = require("ui/page");
+import model = require("./model");
+import labelModule = require("ui/label");
+import listPickerModule = require("ui/list-picker");
+import datePickerModule = require("ui/date-picker");
+import timePickerModule = require("ui/time-picker");
+
+var viewModel: model.WebViewModel;
+var page: pagesModule.Page;
+var label: labelModule.Label;
+var listPicker: listPickerModule.ListPicker;
+var datePicker: datePickerModule.DatePicker;
+var timePicker: timePickerModule.TimePicker;
+
+export function onPageLoaded(args: observableModule.EventData) {
+ viewModel = new model.WebViewModel();
+ page = args.object;
+ page.bindingContext = viewModel;
+
+ viewModel.items = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
+ viewModel.selectedIndex = 5;
+
+ label = page.getViewById("label");
+ listPicker = page.getViewById("listPicker");
+ datePicker = page.getViewById("datePicker");
+ timePicker = page.getViewById("timePicker");
+}
+
+export function onTap(args: observableModule.EventData) {
+ console.log("onTap");
+ viewModel.items = ["Male", "Female"];
+}
\ No newline at end of file
diff --git a/apps/pickers-demo/main-page.xml b/apps/pickers-demo/main-page.xml
new file mode 100644
index 000000000..8a8c03ae6
--- /dev/null
+++ b/apps/pickers-demo/main-page.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/apps/pickers-demo/model.ts b/apps/pickers-demo/model.ts
new file mode 100644
index 000000000..0b7d457a9
--- /dev/null
+++ b/apps/pickers-demo/model.ts
@@ -0,0 +1,27 @@
+import observable = require("data/observable");
+
+export class WebViewModel extends observable.Observable {
+ constructor() {
+ super();
+ }
+
+ private _selectedIndex: number;
+ get selectedIndex(): number {
+ return this._selectedIndex;
+ }
+ set selectedIndex(value: number) {
+ console.log("selectedIndex:" + value);
+ this._selectedIndex = value;
+ this.notify({ object: this, eventName: observable.knownEvents.propertyChange, propertyName: "selectedIndex", value: value });
+ }
+
+ private _items: Array
+ get items(): Array {
+ return this._items;
+ }
+ set items(value: Array) {
+ console.log("items:" + value);
+ this._items = value;
+ this.notify({ object: this, eventName: observable.knownEvents.propertyChange, propertyName: "items", value: value });
+ }
+}
\ No newline at end of file
diff --git a/apps/pickers-demo/package.json b/apps/pickers-demo/package.json
new file mode 100644
index 000000000..42c601251
--- /dev/null
+++ b/apps/pickers-demo/package.json
@@ -0,0 +1,2 @@
+{ "name" : "pickers-demo",
+ "main" : "app.js" }
\ No newline at end of file
diff --git a/ui/list-picker/list-picker.android.ts b/ui/list-picker/list-picker.android.ts
index c7e467e44..5d2d375b7 100644
--- a/ui/list-picker/list-picker.android.ts
+++ b/ui/list-picker/list-picker.android.ts
@@ -56,6 +56,7 @@ export class ListPicker extends common.ListPicker {
},
format: function (index: number) {
+ console.log("format(" + index + ")");
if (this.owner) {
return this.owner._getItemAsString(index);
}
@@ -70,10 +71,21 @@ export class ListPicker extends common.ListPicker {
},
onValueChange: function (picker: android.widget.NumberPicker, oldVal: number, newVal: number) {
+ console.log("onValueChange("+oldVal+", "+newVal+")");
if (this.owner) {
this.owner._onPropertyChangedFromNative(common.ListPicker.selectedIndexProperty, newVal);
}
}
}));
+
+ this._fixDisappearingSelectedItem();
+ }
+
+ private _fixDisappearingSelectedItem() {
+ //HACK: http://stackoverflow.com/questions/17708325/android-numberpicker-with-formatter-does-not-format-on-first-rendering/26797732
+ var mInputTextField = java.lang.Class.forName("android.widget.NumberPicker").getDeclaredField("mInputText");
+ mInputTextField.setAccessible(true);
+ var mInputText = mInputTextField.get(this._android);
+ mInputText.setFilters([]);
}
}
\ No newline at end of file