mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-17 12:57:42 +08:00
Merge branch 'master' of https://github.com/NativeScript/NativeScript
This commit is contained in:
@ -80,6 +80,7 @@
|
|||||||
<DependentUpon>data-binding.xml</DependentUpon>
|
<DependentUpon>data-binding.xml</DependentUpon>
|
||||||
</TypeScriptCompile>
|
</TypeScriptCompile>
|
||||||
<TypeScriptCompile Include="apps\tests\ui\action-bar\ActionBar_NumberAsText.ts" />
|
<TypeScriptCompile Include="apps\tests\ui\action-bar\ActionBar_NumberAsText.ts" />
|
||||||
|
<TypeScriptCompile Include="apps\tests\ui\placeholder\placeholder-tests.ts" />
|
||||||
<TypeScriptCompile Include="apps\tests\xml-declaration\custom-code-file.ts" />
|
<TypeScriptCompile Include="apps\tests\xml-declaration\custom-code-file.ts" />
|
||||||
<TypeScriptCompile Include="apps\transforms\app.ts" />
|
<TypeScriptCompile Include="apps\transforms\app.ts" />
|
||||||
<TypeScriptCompile Include="apps\transforms\main-page.ts" />
|
<TypeScriptCompile Include="apps\transforms\main-page.ts" />
|
||||||
@ -1984,7 +1985,7 @@
|
|||||||
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
|
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
|
||||||
</WebProjectProperties>
|
</WebProjectProperties>
|
||||||
</FlavorProperties>
|
</FlavorProperties>
|
||||||
<UserProperties ui_2layouts_2wrap-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2grid-layout_2package_1json__JSONSchema="" ui_2layouts_2dock-layout_2package_1json__JSONSchema="" ui_2layouts_2absolute-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2web-view_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2content-view_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2gallery-app_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2absolute-layout-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2editable-text-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2scroll-view_2package_1json__JSONSchema="http://json.schemastore.org/package" />
|
<UserProperties ui_2scroll-view_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2editable-text-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2absolute-layout-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2gallery-app_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2content-view_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2web-view_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2absolute-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2dock-layout_2package_1json__JSONSchema="" ui_2layouts_2grid-layout_2package_1json__JSONSchema="" ui_2layouts_2wrap-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" />
|
||||||
</VisualStudio>
|
</VisualStudio>
|
||||||
</ProjectExtensions>
|
</ProjectExtensions>
|
||||||
</Project>
|
</Project>
|
@ -7,7 +7,7 @@ import uiTestModule = require("./ui-test");
|
|||||||
|
|
||||||
frameModule.Frame.defaultAnimatedNavigation = false;
|
frameModule.Frame.defaultAnimatedNavigation = false;
|
||||||
|
|
||||||
function isRunningOnEmulator(): boolean {
|
export function isRunningOnEmulator(): boolean {
|
||||||
// This checks are not good enough to be added to modules but keeps unittests green.
|
// This checks are not good enough to be added to modules but keeps unittests green.
|
||||||
|
|
||||||
if (platform.device.os === platform.platformNames.android) {
|
if (platform.device.os === platform.platformNames.android) {
|
||||||
@ -61,6 +61,7 @@ allTests["IMAGE"] = require("./ui/image/image-tests");
|
|||||||
allTests["SLIDER"] = require("./ui/slider/slider-tests");
|
allTests["SLIDER"] = require("./ui/slider/slider-tests");
|
||||||
allTests["SWITCH"] = require("./ui/switch/switch-tests");
|
allTests["SWITCH"] = require("./ui/switch/switch-tests");
|
||||||
allTests["PROGRESS"] = require("./ui/progress/progress-tests");
|
allTests["PROGRESS"] = require("./ui/progress/progress-tests");
|
||||||
|
allTests["PLACEHOLDER"] = require("./ui/placeholder/placeholder-tests");
|
||||||
allTests["PAGE"] = require("./ui/page/page-tests");
|
allTests["PAGE"] = require("./ui/page/page-tests");
|
||||||
allTests["LISTVIEW"] = require("./ui/list-view/list-view-tests");
|
allTests["LISTVIEW"] = require("./ui/list-view/list-view-tests");
|
||||||
allTests["ACTIVITY-INDICATOR"] = require("./ui/activity-indicator/activity-indicator-tests");
|
allTests["ACTIVITY-INDICATOR"] = require("./ui/activity-indicator/activity-indicator-tests");
|
||||||
|
@ -6,6 +6,7 @@ import observable = require("data/observable");
|
|||||||
import types = require("utils/types");
|
import types = require("utils/types");
|
||||||
import platform = require("platform");
|
import platform = require("platform");
|
||||||
import utils = require("utils/utils");
|
import utils = require("utils/utils");
|
||||||
|
import testRunner = require("../../testRunner");
|
||||||
|
|
||||||
// <snippet module="ui/list-view" title="list-view">
|
// <snippet module="ui/list-view" title="list-view">
|
||||||
// # ListView
|
// # ListView
|
||||||
@ -633,6 +634,9 @@ export function test_ConverterIsCalledJustOnce_onAddingItemsToListView() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function test_no_memory_leak_when_items_is_regular_array() {
|
export function test_no_memory_leak_when_items_is_regular_array() {
|
||||||
|
if (testRunner.isRunningOnEmulator()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
var createFunc = function (): listViewModule.ListView {
|
var createFunc = function (): listViewModule.ListView {
|
||||||
var listView = new listViewModule.ListView();
|
var listView = new listViewModule.ListView();
|
||||||
listView.items = FEW_ITEMS;
|
listView.items = FEW_ITEMS;
|
||||||
@ -645,6 +649,9 @@ export function test_no_memory_leak_when_items_is_regular_array() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function test_no_memory_leak_when_items_is_observable_array() {
|
export function test_no_memory_leak_when_items_is_observable_array() {
|
||||||
|
if (testRunner.isRunningOnEmulator()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
// Keep the reference to the observable array to test the weakEventListener
|
// Keep the reference to the observable array to test the weakEventListener
|
||||||
var colors = new observableArray.ObservableArray(["red", "green", "blue"]);
|
var colors = new observableArray.ObservableArray(["red", "green", "blue"]);
|
||||||
|
|
||||||
|
@ -378,3 +378,30 @@ export var test_Observable_WhenCreatedWithJSON_PropertyChangedWithBracketsNotati
|
|||||||
|
|
||||||
TKUnit.assert(receivedCount === 1, "PropertyChanged event not raised properly.");
|
TKUnit.assert(receivedCount === 1, "PropertyChanged event not raised properly.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function test_AddingTwoEventHandlersAndRemovingWithinHandlerShouldRaiseAllEvents() {
|
||||||
|
var observableInstance = new observable.Observable();
|
||||||
|
var firstHandlerCalled = false;
|
||||||
|
var secondHandlerCalled= false;
|
||||||
|
|
||||||
|
var firstHandler = function (args) {
|
||||||
|
observableInstance.off(observable.Observable.propertyChangeEvent, firstHandler, firstObserver);
|
||||||
|
firstHandlerCalled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
var secondHandler = function (args) {
|
||||||
|
observableInstance.off(observable.Observable.propertyChangeEvent, secondHandler, secondObserver);
|
||||||
|
secondHandlerCalled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
var firstObserver = new observable.Observable();
|
||||||
|
var secondObserver = new observable.Observable();
|
||||||
|
|
||||||
|
observableInstance.on(observable.Observable.propertyChangeEvent, firstHandler, firstObserver);
|
||||||
|
observableInstance.on(observable.Observable.propertyChangeEvent, secondHandler, secondObserver);
|
||||||
|
|
||||||
|
observableInstance.set("someProperty", "some value");
|
||||||
|
|
||||||
|
TKUnit.assertEqual(firstHandlerCalled, true);
|
||||||
|
TKUnit.assertEqual(secondHandlerCalled, true);
|
||||||
|
}
|
||||||
|
78
apps/tests/ui/placeholder/placeholder-tests.ts
Normal file
78
apps/tests/ui/placeholder/placeholder-tests.ts
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
import TKUnit = require("../../TKUnit");
|
||||||
|
import platform = require("platform");
|
||||||
|
import utils = require("utils/utils");
|
||||||
|
import helper = require("../helper");
|
||||||
|
import viewModule = require("ui/core/view");
|
||||||
|
|
||||||
|
// <snippet module="ui/placeholder" title="placeholder">
|
||||||
|
// # Placeholder
|
||||||
|
// Using the placeholder requires the Placeholder module.
|
||||||
|
// ``` JavaScript
|
||||||
|
import placeholderModule = require("ui/placeholder");
|
||||||
|
// ```
|
||||||
|
|
||||||
|
// Creating native view for the Placeholder using creatingView event.
|
||||||
|
//```XML
|
||||||
|
// <Page>
|
||||||
|
// {%raw%}<Placeholder creatingView="creatingView" />{%endraw%}
|
||||||
|
// </Page>
|
||||||
|
//```
|
||||||
|
//```JS
|
||||||
|
//var platform = require("platform");
|
||||||
|
//var utils = require("utils/utils");
|
||||||
|
//
|
||||||
|
//function creatingView(args) {
|
||||||
|
// var nativeView;
|
||||||
|
// if (platform.device.os === platform.platformNames.ios) {
|
||||||
|
// nativeView = new UITextView();
|
||||||
|
// nativeView.text = "Native";
|
||||||
|
// } else if (platform.device.os === platform.platformNames.android) {
|
||||||
|
// nativeView = new android.widget.TextView(utils.ad.getApplicationContext());
|
||||||
|
// nativeView.setText("Native");
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// args.view = nativeView;
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//exports.creatingView = creatingView;
|
||||||
|
//```
|
||||||
|
// </snippet>
|
||||||
|
|
||||||
|
export function test_placeholder_creatingView() {
|
||||||
|
var nativeView;
|
||||||
|
|
||||||
|
var p = new placeholderModule.Placeholder();
|
||||||
|
p.id = "test";
|
||||||
|
p.on(placeholderModule.Placeholder.creatingViewEvent, (args: placeholderModule.CreateViewEventData) => {
|
||||||
|
if (platform.device.os === platform.platformNames.ios) {
|
||||||
|
nativeView = new UITextView();
|
||||||
|
nativeView.text = "Native";
|
||||||
|
} else if (platform.device.os === platform.platformNames.android) {
|
||||||
|
nativeView = new android.widget.TextView(utils.ad.getApplicationContext());
|
||||||
|
nativeView.setText("Native");
|
||||||
|
}
|
||||||
|
|
||||||
|
args.view = nativeView;
|
||||||
|
});
|
||||||
|
|
||||||
|
if (platform.device.os === platform.platformNames.ios) {
|
||||||
|
TKUnit.assert(p.ios instanceof UITextView, "ios property should be UITextView. Current value: " + p.ios);
|
||||||
|
} else if (platform.device.os === platform.platformNames.android) {
|
||||||
|
p._emit("creatingView");
|
||||||
|
TKUnit.assert(nativeView instanceof android.widget.TextView, "Native view should be android.widget.TextView. Current value: " + nativeView);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export function test_placeholder_will_not_crash_wihout_creatingView() {
|
||||||
|
var p = new placeholderModule.Placeholder();
|
||||||
|
|
||||||
|
function testAction(views: Array<viewModule.View>) {
|
||||||
|
if (platform.device.os === platform.platformNames.ios) {
|
||||||
|
TKUnit.assert(p.ios === undefined, "ios property should be undefined. Current value: " + p.ios);
|
||||||
|
} else if (platform.device.os === platform.platformNames.android) {
|
||||||
|
TKUnit.assert(p.android === undefined, "android view should be undefined. Current value: " + p.android);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
helper.buildUIAndRunTest(p, testAction);
|
||||||
|
}
|
@ -2,7 +2,7 @@
|
|||||||
<Repeater id="repeater" items="{{ items }}">
|
<Repeater id="repeater" items="{{ items }}">
|
||||||
<Repeater.itemTemplate>
|
<Repeater.itemTemplate>
|
||||||
<GridLayout width="94" height="94" >
|
<GridLayout width="94" height="94" >
|
||||||
<Label text="{{ $parents['Page'].parentViewProperty }}" tap="{{ tapItem }}" />
|
<Label text="{{ sourceProperty = $parents['Page'].parentViewProperty }}" tap="{{ tapItem }}" />
|
||||||
</GridLayout>
|
</GridLayout>
|
||||||
</Repeater.itemTemplate>
|
</Repeater.itemTemplate>
|
||||||
</Repeater>
|
</Repeater>
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import TKUnit = require("../../TKUnit");
|
import TKUnit = require("../../TKUnit");
|
||||||
|
import testRunner = require("../../testRunner");
|
||||||
import helper = require("../helper");
|
import helper = require("../helper");
|
||||||
import viewModule = require("ui/core/view");
|
import viewModule = require("ui/core/view");
|
||||||
import pagesModule = require("ui/page");
|
import pagesModule = require("ui/page");
|
||||||
@ -427,6 +428,9 @@ export var testNativeTextAlignmentFromLocal = function () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export var testMemoryLeak = function () {
|
export var testMemoryLeak = function () {
|
||||||
|
if (testRunner.isRunningOnEmulator()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
helper.buildUIWithWeakRefAndInteract(_createTextFieldFunc, function (textField) {
|
helper.buildUIWithWeakRefAndInteract(_createTextFieldFunc, function (textField) {
|
||||||
textFieldTestsNative.typeTextNatively(textField, "Hello, world!");
|
textFieldTestsNative.typeTextNatively(textField, "Hello, world!");
|
||||||
});
|
});
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import TKUnit = require("../../TKUnit");
|
import TKUnit = require("../../TKUnit");
|
||||||
|
import testRunner = require("../../testRunner");
|
||||||
import helper = require("../helper");
|
import helper = require("../helper");
|
||||||
import viewModule = require("ui/core/view");
|
import viewModule = require("ui/core/view");
|
||||||
import pagesModule = require("ui/page");
|
import pagesModule = require("ui/page");
|
||||||
@ -468,6 +469,9 @@ export var testNativeTextAlignmentFromLocal = function () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export var testMemoryLeak = function () {
|
export var testMemoryLeak = function () {
|
||||||
|
if (testRunner.isRunningOnEmulator()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
helper.buildUIWithWeakRefAndInteract(_createTextViewFunc, function (textView) {
|
helper.buildUIWithWeakRefAndInteract(_createTextViewFunc, function (textView) {
|
||||||
textViewTestsNative.typeTextNatively(textView, "Hello, world!");
|
textViewTestsNative.typeTextNatively(textView, "Hello, world!");
|
||||||
});
|
});
|
||||||
|
@ -603,7 +603,7 @@ export function test_parse_ShouldParseNestedListViewInListViewTemplate() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function test_parse_ShouldEvaluateEventBindingExpressionInListViewTemplate() {
|
export function test_parse_ShouldEvaluateEventBindingExpressionInListViewTemplate() {
|
||||||
var p = <Page>builder.parse('<Page xmlns="http://www.nativescript.org/tns.xsd"><ListView items="{{ items }}" itemLoading="{{ itemLoading }}"><ListView.itemTemplate><SegmentedBar items="{{ $parents[\'ListView\'].items }}" selectedIndexChanged="{{ $parents[\'ListView\'].changed }}" /></ListView.itemTemplate></ListView></Page>');
|
var p = <Page>builder.parse('<Page xmlns="http://www.nativescript.org/tns.xsd"><ListView items="{{ items }}" itemLoading="{{ itemLoading }}"><ListView.itemTemplate><SegmentedBar items="{{ sourceProperty = $parents[\'ListView\'].items }}" selectedIndexChanged="{{ sourceProperty = $parents[\'ListView\'].changed }}" /></ListView.itemTemplate></ListView></Page>');
|
||||||
|
|
||||||
function testAction(views: Array<viewModule.View>) {
|
function testAction(views: Array<viewModule.View>) {
|
||||||
var ctrl: segmentedBar.SegmentedBar;
|
var ctrl: segmentedBar.SegmentedBar;
|
||||||
|
@ -136,7 +136,7 @@ export class Observable implements definition.Observable {
|
|||||||
var i;
|
var i;
|
||||||
var entry: ListenerEntry;
|
var entry: ListenerEntry;
|
||||||
var observersLength = observers.length;
|
var observersLength = observers.length;
|
||||||
for (i = 0; i < observersLength; i++) {
|
for (i = observersLength - 1; i >= 0 ; i--) {
|
||||||
entry = observers[i];
|
entry = observers[i];
|
||||||
if (entry.thisArg) {
|
if (entry.thisArg) {
|
||||||
entry.callback.apply(entry.thisArg, [data]);
|
entry.callback.apply(entry.thisArg, [data]);
|
||||||
|
@ -140,6 +140,15 @@ export class Binding {
|
|||||||
source: WeakRef<Object>;
|
source: WeakRef<Object>;
|
||||||
target: WeakRef<Bindable>;
|
target: WeakRef<Bindable>;
|
||||||
|
|
||||||
|
public loadedHandlerVisualTreeBinding(args) {
|
||||||
|
var targetInstance = args.object;
|
||||||
|
targetInstance.off(viewModule.View.loadedEvent, this.loadedHandlerVisualTreeBinding, this);
|
||||||
|
this.unbind();
|
||||||
|
if (!types.isNullOrUndefined(targetInstance.bindingContext)) {
|
||||||
|
this.bind(targetInstance.bindingContext);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
private propertyChangeListeners = {};
|
private propertyChangeListeners = {};
|
||||||
|
|
||||||
private sourceOptions: { instance: WeakRef<any>; property: any };
|
private sourceOptions: { instance: WeakRef<any>; property: any };
|
||||||
@ -213,6 +222,11 @@ export class Binding {
|
|||||||
if (parentView) {
|
if (parentView) {
|
||||||
currentObject = parentView.bindingContext;
|
currentObject = parentView.bindingContext;
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
var targetInstance = this.target.get();
|
||||||
|
targetInstance.off(viewModule.View.loadedEvent, this.loadedHandlerVisualTreeBinding, this);
|
||||||
|
targetInstance.on(viewModule.View.loadedEvent, this.loadedHandlerVisualTreeBinding, this);
|
||||||
|
}
|
||||||
currentObjectChanged = true;
|
currentObjectChanged = true;
|
||||||
}
|
}
|
||||||
result.push({ instance: currentObject, property: objProp });
|
result.push({ instance: currentObject, property: objProp });
|
||||||
@ -507,7 +521,7 @@ export class Binding {
|
|||||||
indexAsInt--;
|
indexAsInt--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else if (types.isString(index)) {
|
||||||
while (result && result.typeName !== index) {
|
while (result && result.typeName !== index) {
|
||||||
result = result.parent;
|
result = result.parent;
|
||||||
}
|
}
|
||||||
|
@ -196,8 +196,10 @@ export class View extends viewCommon.View {
|
|||||||
|
|
||||||
public onMeasure(widthMeasureSpec: number, heightMeasureSpec: number): void {
|
public onMeasure(widthMeasureSpec: number, heightMeasureSpec: number): void {
|
||||||
var view = this._nativeView;
|
var view = this._nativeView;
|
||||||
if (view) {
|
let nativeWidth = 0;
|
||||||
|
let nativeHeight = 0;
|
||||||
|
|
||||||
|
if (view) {
|
||||||
var width = utils.layout.getMeasureSpecSize(widthMeasureSpec);
|
var width = utils.layout.getMeasureSpecSize(widthMeasureSpec);
|
||||||
var widthMode = utils.layout.getMeasureSpecMode(widthMeasureSpec);
|
var widthMode = utils.layout.getMeasureSpecMode(widthMeasureSpec);
|
||||||
|
|
||||||
@ -213,16 +215,18 @@ export class View extends viewCommon.View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var nativeSize = view.sizeThatFits(CGSizeMake(width, height));
|
var nativeSize = view.sizeThatFits(CGSizeMake(width, height));
|
||||||
|
nativeWidth = nativeSize.width;
|
||||||
|
nativeHeight = nativeSize.height;
|
||||||
|
}
|
||||||
|
|
||||||
var measureWidth = Math.max(nativeSize.width, this.minWidth);
|
var measureWidth = Math.max(nativeWidth, this.minWidth);
|
||||||
var measureHeight = Math.max(nativeSize.height, this.minHeight);
|
var measureHeight = Math.max(nativeHeight, this.minHeight);
|
||||||
|
|
||||||
var widthAndState = View.resolveSizeAndState(measureWidth, width, widthMode, 0);
|
var widthAndState = View.resolveSizeAndState(measureWidth, width, widthMode, 0);
|
||||||
var heightAndState = View.resolveSizeAndState(measureHeight, height, heightMode, 0);
|
var heightAndState = View.resolveSizeAndState(measureHeight, height, heightMode, 0);
|
||||||
|
|
||||||
this.setMeasuredDimension(widthAndState, heightAndState);
|
this.setMeasuredDimension(widthAndState, heightAndState);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public onLayout(left: number, top: number, right: number, bottom: number): void {
|
public onLayout(left: number, top: number, right: number, bottom: number): void {
|
||||||
//
|
//
|
||||||
|
@ -242,8 +242,10 @@ export function action(arg: any): Promise<string> {
|
|||||||
|
|
||||||
if (title) {
|
if (title) {
|
||||||
alert.setTitle(title);
|
alert.setTitle(title);
|
||||||
|
if (!options.actions) {
|
||||||
alert.setMessage(message);
|
alert.setMessage(message);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
alert.setTitle(message);
|
alert.setTitle(message);
|
||||||
}
|
}
|
||||||
|
@ -205,6 +205,7 @@ class ListViewAdapter extends android.widget.BaseAdapter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (args.view) {
|
if (args.view) {
|
||||||
|
this._listView._prepareItem(args.view, index);
|
||||||
if (!args.view.parent) {
|
if (!args.view.parent) {
|
||||||
if (args.view instanceof layoutBaseModule.LayoutBase) {
|
if (args.view instanceof layoutBaseModule.LayoutBase) {
|
||||||
this._listView._addView(args.view);
|
this._listView._addView(args.view);
|
||||||
@ -221,8 +222,6 @@ class ListViewAdapter extends android.widget.BaseAdapter {
|
|||||||
this._listView._realizedItems[convertView.hashCode()] = args.view;
|
this._listView._realizedItems[convertView.hashCode()] = args.view;
|
||||||
// cache the realized index (used to raise the ItemLoading event upon scroll stop)
|
// cache the realized index (used to raise the ItemLoading event upon scroll stop)
|
||||||
args.view[REALIZED_INDEX] = index;
|
args.view[REALIZED_INDEX] = index;
|
||||||
|
|
||||||
this._listView._prepareItem(args.view, index);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return convertView;
|
return convertView;
|
||||||
|
@ -239,12 +239,12 @@ export class ListView extends common.ListView {
|
|||||||
var args = notifyForItemAtIndex(this, cell, ITEMLOADING, indexPath);
|
var args = notifyForItemAtIndex(this, cell, ITEMLOADING, indexPath);
|
||||||
var view = cell.view = args.view || this._getDefaultItemContent(indexPath.row);
|
var view = cell.view = args.view || this._getDefaultItemContent(indexPath.row);
|
||||||
|
|
||||||
|
this._prepareItem(view, indexPath.row);
|
||||||
if (view && !view.parent && view.ios) {
|
if (view && !view.parent && view.ios) {
|
||||||
cell.contentView.addSubview(view.ios);
|
cell.contentView.addSubview(view.ios);
|
||||||
this._addView(view);
|
this._addView(view);
|
||||||
}
|
}
|
||||||
|
|
||||||
this._prepareItem(view, indexPath.row);
|
|
||||||
cellHeight = this._layoutCell(view, indexPath);
|
cellHeight = this._layoutCell(view, indexPath);
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
|
@ -9,7 +9,7 @@ export class Placeholder extends common.Placeholder {
|
|||||||
public _createUI() {
|
public _createUI() {
|
||||||
var args = <definition.CreateViewEventData>{ eventName: common.Placeholder.creatingViewEvent, object: this, view: undefined, context: this._context };
|
var args = <definition.CreateViewEventData>{ eventName: common.Placeholder.creatingViewEvent, object: this, view: undefined, context: this._context };
|
||||||
this.notify(args);
|
this.notify(args);
|
||||||
this._android = <android.view.View>args.view || new android.view.View(this._context);
|
this._android = <android.view.View>args.view;
|
||||||
}
|
}
|
||||||
|
|
||||||
get android(): android.view.View {
|
get android(): android.view.View {
|
||||||
|
@ -10,7 +10,7 @@ export class Placeholder extends common.Placeholder {
|
|||||||
if (!this._ios) {
|
if (!this._ios) {
|
||||||
var args = <definition.CreateViewEventData>{ eventName: common.Placeholder.creatingViewEvent, object: this, view: undefined, context: undefined };
|
var args = <definition.CreateViewEventData>{ eventName: common.Placeholder.creatingViewEvent, object: this, view: undefined, context: undefined };
|
||||||
super.notify(args);
|
super.notify(args);
|
||||||
this._ios = args.view || new UIView();
|
this._ios = args.view;
|
||||||
}
|
}
|
||||||
return this._ios;
|
return this._ios;
|
||||||
}
|
}
|
||||||
|
@ -149,8 +149,8 @@ export class Repeater extends viewModule.CustomLayoutView implements definition.
|
|||||||
for (i = 0; i < this.items.length; i++) {
|
for (i = 0; i < this.items.length; i++) {
|
||||||
var viewToAdd = !types.isNullOrUndefined(this.itemTemplate) ? builder.parse(this.itemTemplate, this) : this._getDefaultItemContent(i);
|
var viewToAdd = !types.isNullOrUndefined(this.itemTemplate) ? builder.parse(this.itemTemplate, this) : this._getDefaultItemContent(i);
|
||||||
if (!types.isNullOrUndefined(viewToAdd)) {
|
if (!types.isNullOrUndefined(viewToAdd)) {
|
||||||
this.itemsLayout.addChild(viewToAdd);
|
|
||||||
viewToAdd.bindingContext = this._getDataItem(i);
|
viewToAdd.bindingContext = this._getDataItem(i);
|
||||||
|
this.itemsLayout.addChild(viewToAdd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user