在列表视图项目中使用折叠不完全删除特定项目视图的 space
Using collapse in listview items not removing the space for particular item view entirely
在列表视图项目中,我在布局中使用 Visiblity
概念来执行
可见和崩溃。执行 Collapse
时,listview 项目不
从布局中完全删除该视图。
正在删除name、id等item内容,但是
在该特定列表项位置放置空白的白色视图
列表视图。
下面我分享了代码以便更好地理解:
StudentData.ts :
export class StudentData {
constructor(public id: number, public name: string, public collapseData: boolean) {}
}
student.page.html:
<ListView id="listId" [items]="allFeedItems" class="list-group" height="300">
<ng-template let-item="item">
<StackLayout [visibility]="item.collapseData ? 'visible' : 'collapse'" >
<StackLayout orientation="horizontal">
<Label class="item-address" text="address"></Label>
</StackLayout>
.....
</StackLayout>
</ng-template>
</ListView>
发生了什么:
例如:在模态 class 中,我在 hashmap 中保存列表项的开关控制值。当回到我的主页(即 StudentPage)时,我需要完全隐藏特定的行项目。但它只删除内容名称和 ID。它不会删除该特定列表视图项目位置的空白视图。
我期待什么:
删除列表视图中该特定项目位置的空白视图。
正如 在评论中提到的那样。我在子堆栈布局而不是父堆栈布局中添加了可见性。然后它不会为特定的列表项使用空白 space。
<ng-template let-item="item">
<StackLayout>
<StackLayout [visibility]="item.collapseData ? 'visible' : 'collapse'" orientation="horizontal">
<Label class="item-address" text="address"></Label>
</StackLayout>
.....
</StackLayout>
</ng-template>
你应该为此使用不同的模板 -
<ListView [items]="items" [itemTemplateSelector]="templateSelector">
<template nsTemplateKey="big" let-item="item">
<!-- big item template -->
</template>
<template nsTemplateKey="small" let-item="item">
<!-- small item with image -->
</template>
<template nsTemplateKey="small-no-image" let-item="item">
<!-- small item with no image -->
</template>
</ListView>
和 TS 代码 -
public templateSelector(item: NewsItem, index: number, items:
NewsItem[]) {
if (item.type === "big") {
return "big"
}
if (item.type === "small" && item.imageUrl) {
return "small";
}
if (item.type === "small" && item.imageUrl) {
return "small-no-image";
}
throw new Error("Unrecognized template!")
}
阅读此处了解更多信息 - https://medium.com/@alexander.vakrilov/faster-nativescript-listview-with-multiple-item-templates-8f903a32e48f
在列表视图项目中,我在布局中使用
Visiblity
概念来执行 可见和崩溃。执行Collapse
时,listview 项目不 从布局中完全删除该视图。正在删除name、id等item内容,但是 在该特定列表项位置放置空白的白色视图 列表视图。
下面我分享了代码以便更好地理解:
StudentData.ts :
export class StudentData {
constructor(public id: number, public name: string, public collapseData: boolean) {}
}
student.page.html:
<ListView id="listId" [items]="allFeedItems" class="list-group" height="300">
<ng-template let-item="item">
<StackLayout [visibility]="item.collapseData ? 'visible' : 'collapse'" >
<StackLayout orientation="horizontal">
<Label class="item-address" text="address"></Label>
</StackLayout>
.....
</StackLayout>
</ng-template>
</ListView>
发生了什么:
例如:在模态 class 中,我在 hashmap 中保存列表项的开关控制值。当回到我的主页(即 StudentPage)时,我需要完全隐藏特定的行项目。但它只删除内容名称和 ID。它不会删除该特定列表视图项目位置的空白视图。
我期待什么:
删除列表视图中该特定项目位置的空白视图。
正如
<ng-template let-item="item">
<StackLayout>
<StackLayout [visibility]="item.collapseData ? 'visible' : 'collapse'" orientation="horizontal">
<Label class="item-address" text="address"></Label>
</StackLayout>
.....
</StackLayout>
</ng-template>
你应该为此使用不同的模板 -
<ListView [items]="items" [itemTemplateSelector]="templateSelector">
<template nsTemplateKey="big" let-item="item">
<!-- big item template -->
</template>
<template nsTemplateKey="small" let-item="item">
<!-- small item with image -->
</template>
<template nsTemplateKey="small-no-image" let-item="item">
<!-- small item with no image -->
</template>
</ListView>
和 TS 代码 -
public templateSelector(item: NewsItem, index: number, items:
NewsItem[]) {
if (item.type === "big") {
return "big"
}
if (item.type === "small" && item.imageUrl) {
return "small";
}
if (item.type === "small" && item.imageUrl) {
return "small-no-image";
}
throw new Error("Unrecognized template!")
}
阅读此处了解更多信息 - https://medium.com/@alexander.vakrilov/faster-nativescript-listview-with-multiple-item-templates-8f903a32e48f