テーブルビュー行を作成しました。ここでは、各行に 1 つのラベルと 2 つの画像ビューがあるテーブルビューがあります。画像をクリックすると、ラベル値の選択された行で何かを変更する必要があります。
しかし、画像をクリックしている場合、私のコードから、ラベルの値は最後のアイテムから変更されます。私のコードで何が問題なのですか。
for( var i=0; i<data.length; i++){
var row = Ti.UI.createTableViewRow({
layout : 'horizontal',
width: "100%",
height: Ti.UI.SIZE,
});
row.add(Ti.UI.createImageView({
image: data[i].image,
top: 5,
width: '50',
height: Ti.UI.SIZE,
}));
row.add(Ti.UI.createLabel({
text: data[i].name,
top: 5,
width: 180,
color: '#040404',
height: Ti.UI.SIZE,
}));
var deleteitem = Ti.UI.createImageView({
image: "images/back.png",
top: 5,
i:i,
squantity : data[i].itemCount,
spprice :data[i].itemPrice,
width: Ti.UI.SIZE,
height: Ti.UI.SIZE,
myrow: row,
});
row.add(deleteitem);
var adddeleteitemview = Ti.UI.createView({
width: Ti.UI.SIZE,
height: Ti.UI.SIZE,
layout : 'horizontal',
left:10,
borderColor:"gray",
borderRadius:"10"
});
var removeitem = Ti.UI.createImageView({
image: "images/minus.jpg",
top: 5,
width: Ti.UI.SIZE,
squantity : data[i].itemCount,
spprice :data[i].itemPrice,
height: Ti.UI.SIZE,
});
adddeleteitemview.add(removeitem);
var itemcounttext = Ti.UI.createLabel({
top: 5,
text:data[i].itemCount,
width: Ti.UI.SIZE,
height: Ti.UI.SIZE,
});
adddeleteitemview.add(itemcounttext);
removeitem.addEventListener('click', function(e) {
squantity = e.source.squantity;
spprice = e.source.spprice;
totalqty = Number(totalqty) - Number(1);
$.ViewCartItemslist_header_cart.text = totalqty;
totalamount = Number(totalamount) - Number((spprice));
squantity = Number(squantity) - 1;
itemcounttext.text=squantity;
$.ViewCartItemslist_total_value.text = totalamount;
});
var additem = Ti.UI.createImageView({
image: "images/plus.jpg",
top: 5,
width: Ti.UI.SIZE,
squantity : data[i].itemCount,
spprice :data[i].itemPrice,
height: Ti.UI.SIZE,
});
adddeleteitemview.add(additem);
additem.addEventListener('click', function(e) {
squantity = e.source.squantity;
spprice = e.source.spprice;
totalqty = Number(totalqty) + Number(1);
$.ViewCartItemslist_header_cart.text = totalqty;
totalamount = Number(totalamount) + Number((spprice));
squantity = Number(squantity) + 1;
itemcounttext.text=squantity;
$.ViewCartItemslist_total_value.text = totalamount;
});
row.add(adddeleteitemview);
dataArray.push(row);
row.addEventListener('click', function() {});
deleteitem.addEventListener('click', function(e) {
squantity = e.source.squantity;
spprice = e.source.spprice;
$.ViewCartItemstableView.deleteRow(e.source.myrow);
totalqty = Number(totalqty) - Number(squantity);
$.ViewCartItemslist_header_cart.text = totalqty;
totalamount = Number(totalamount) - Number((spprice * squantity));
$.ViewCartItemslist_total_value.text = totalamount;
});
};
$.ViewCartItemstableView.setData(dataArray);
}
編集:
トニーの回答から、少し改善されています。
removeitem.addEventListener("click",function(e){
var item=e.source;
item.getParent();
Ti.API.info("parent"+item.getParent());
});
ここで次のような結果が得られます:
親[オブジェクトTiUIView]
のテキストを変更する方法
var itemcounttext = Ti.UI.createLabel({
top: 5,
text:data[i].itemCount,
width: Ti.UI.SIZE,
height: Ti.UI.SIZE,
});
このラベル ID 値を取得するにはどうすればよいですか? imageview onclick イベントリスナー ((ie,)removeitem.addEventListener("click",function(e){) で結果を変更する必要があります。
誰かが知っていれば、実装のアイデアを教えてください
編集:
トニーコメントより、
IOS ではうまく機能していますが、Android の実装では機能しません。
アラート (item.children[1].getText());
ここでは、正しい更新された値でアラートを取得していますが、ラベルには表示されていません。Androidでこの問題を解決するアイデアを教えてください。