gpt4 book ai didi

javascript - Nativescript:滚动时重用 ListView 项目

转载 作者:行者123 更新时间:2023-12-03 01:47:23 24 4
gpt4 key购买 nike

我正在尝试通过单击存储[ <Label> 将产品添加到购物车]. 然后,我将更改该添加列表的标签颜色。

之后,我尝试通过滚动添加更多产品。自动,其他一些ListView列表的标签颜色已更改。

我知道这些行为会发生在 UITableViewiOS 。在NSDictionary的帮助下, 我可以应付这个。 Tableview Reusing in iOS

我不知道如何在NativeScript中处理这个问题

编码

.js

exports.cartColorChange = function(args) {
var lbl = args.object;
lbl.color = "rgb(171, 0, 230)";
};

.xml

<ListView col="0" row="2" items="{{ mySecondItems }}" id="myListVw" itemLoading="listViewItemsLoading" itemTap="secondListViewItemTap" class="list-group" separatorColor="transparent">
<ListView.itemTemplate>

<GridLayout class="listGrid" columns="75,*" rows="*" width="100%" height="90" >
<Label col="0" row="0" class="roundCircle" text="{{ price }}" textWrap="true" />

<StackLayout col="1" row="0" orientation="vertical" verticalAlignment="center">
<Label class="booksubtitle" text="{{ subtitle }}" textWrap="true" id="wow" />
<Label class="bookTitle" text="{{ title }}" textWrap="true" />
<Label class="addCart" text="&#xf291;" textWrap="true" tap="cartColorChange" />

</StackLayout>
</GridLayout>
</ListView.itemTemplate>
</ListView>

.css

Label.addCart{

text-align: right;
color: rgb(220, 220, 220);
margin-right: 15px;
margin-bottom: 0px;
font-size: 15px;
font-family: "FontAwesome";
}

输出:

enter image description here

最佳答案

您直接更改渲染对象的颜色,因此当对象被回收时,它会保留该颜色。

单击时更改对象属性可以达到相同的效果。并基于该属性应用样式。例如 className="{{isClicked?'clickedCart':'notClickedCart'}}"STLe.color="{{isClicked?'red':'blue'}}"

这里是更新的 Playground 演示:https://play.nativescript.org/?template=play-js&id=T6sna8&v=8

编码

.js

exports.cartColorChange = function(args) {
var lbl = args.object;
var item=lbl.bindingContext;
var index = secondArray.indexOf(item)
console.log("Clicked item with index " + index);
item.isClicked = !item.isClicked;
secondArray.setItem(index,item);
// lbl.color = "rgb(171, 0, 230)";
};

.xml

<ListView col="0" row="2" items="{{ mySecondItems }}" id="myListVw" itemLoading="listViewItemsLoading" itemTap="secondListViewItemTap" class="list-group" separatorColor="transparent">
<ListView.itemTemplate>

<GridLayout class="listGrid" columns="75,*" rows="*" width="100%" height="90" >
<Label col="0" row="0" class="roundCircle" text="{{ price }}" textWrap="true" />

<StackLayout col="1" row="0" orientation="vertical" verticalAlignment="center">
<Label class="booksubtitle" text="{{ subtitle }}" textWrap="true" id="wow" />
<Label class="bookTitle" text="{{ title }}" textWrap="true" />
<Label class="addCart" className="{{isClicked?'clickedCart':'notClickedCart'}}" text="&#xf291;" textWrap="true" tap="cartColorChange" />

</StackLayout>
</GridLayout>
</ListView.itemTemplate>
</ListView>

.css

Label.clickedCart{
color:rgb(171, 0, 230);
}

Label.notClickedCart{
color:gray;
}

关于javascript - Nativescript:滚动时重用 ListView 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50577389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com