fix(list-view): handle reusing wrong view (#9023)

This commit is contained in:
Eduardo Speroni
2020-11-12 00:55:17 -03:00
committed by GitHub
parent e3dc89fbfc
commit 64e0aa6a11
2 changed files with 101 additions and 19 deletions

View File

@@ -608,7 +608,7 @@ export class ListViewTest extends UITest<ListView> {
if (isAndroid) {
// simulates Angular way of removing views
(<any>listView)._realizedItems.forEach((view, nativeView, map) => {
(<any>listView)._realizedItems.forEach(({ view }, nativeView, map) => {
//console.log("view: " + view);
listView._removeView(view);
});
@@ -902,6 +902,29 @@ export class ListViewTest extends UITest<ListView> {
TKUnit.assertEqual(secondNativeElementText, 'green', 'second element text');
}
public test_ItemTemplateSelector_DoesNotThrowWhenItemsChangeMidRender() {
let listView = this.testView;
listView.height = 200;
listView.itemTemplates = this._itemTemplatesString;
listView.itemTemplateSelector = "age === 0 ? 'red' : 'green'";
listView.items = ListViewTest.generateItemsForMultipleTemplatesTests(4);
listView.items[0].age = 0;
listView.once('itemLoading', () => {
if (listView.items && listView.items.length) {
listView.items[0].age = listView.items[0].age !== 0 ? 0 : 1;
}
});
listView.refresh();
TKUnit.wait(0.1);
listView.scrollToIndex(1);
TKUnit.wait(0.1);
listView.scrollToIndex(2);
TKUnit.wait(0.1);
listView.scrollToIndex(3);
TKUnit.wait(0.1);
}
public test_ItemTemplateSelector_TestVirtualization() {
let listView = this.testView;
listView.height = 300;