我正在尝试通过点击商店[<Label>
]将商品添加到购物车。然后,我正在为添加的列表更改标签的颜色。
之后,我试图通过滚动添加更多产品。自动更改了其他ListView
列表的标签颜色。
我知道这些行为会发生在UITableView
的{{1}}中。在iOS
的帮助下,我可以处理这个问题。 Tableview Reusing in iOS
我不知道如何在NSDictionary
编码
的.js
NativeScript
.XML
exports.cartColorChange = function(args) {
var lbl = args.object;
lbl.color = "rgb(171, 0, 230)";
};
的CSS
<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="" textWrap="true" tap="cartColorChange" />
</StackLayout>
</GridLayout>
</ListView.itemTemplate>
</ListView>
输出:
答案 0 :(得分:1)
您正在直接更改渲染对象的颜色,因为当对象被回收时,它会保留该颜色。
单击时更改对象属性可以达到相同的效果。并基于该属性应用样式。例如className="{{isClicked?'clickedCart':'notClickedCart'}}"
或stle.color="{{isClicked?'red':'blue'}}"
这里是更新的游乐场演示: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="" textWrap="true" tap="cartColorChange" />
</StackLayout>
</GridLayout>
</ListView.itemTemplate>
</ListView>
<强>的CSS 强>
Label.clickedCart{
color:rgb(171, 0, 230);
}
Label.notClickedCart{
color:gray;
}
答案 1 :(得分:0)
是的,listview项目确实被重用,以节省内存。
Here您可以找到用于保存问题的方法,其中包括将listview项绑定到模型中的某个属性。