标签文本未在Tianium android中的tableview子级中更新,而是在工作';IOS中的s

标签文本未在Tianium android中的tableview子级中更新,而是在工作';IOS中的s,android,imageview,titanium,label,tableview,Android,Imageview,Titanium,Label,Tableview,我曾尝试使用Tianium更新/更改android中的lebel。但是文本上没有显示该值。但是我在警报中得到了更新后的值。但是ios运行良好 var itemcounttext = Ti.UI.createLabel({ top: 5, color: "#000000", left:10, text:data[i].itemCount, width: Ti.UI.SIZE, height: Ti.UI.SIZE, }); var additem = Ti.UI.createIma

我曾尝试使用Tianium更新/更改android中的lebel。但是文本上没有显示该值。但是我在警报中得到了更新后的值。但是ios运行良好

 var itemcounttext = Ti.UI.createLabel({
 top: 5,
 color: "#000000",
 left:10,
 text:data[i].itemCount,
 width: Ti.UI.SIZE,
 height: Ti.UI.SIZE,
 });
var additem = Ti.UI.createImageView({
image: "/images/plus.jpg",
top: 5,
width: Ti.UI.SIZE,
left:10,
height: Ti.UI.SIZE,
});
adddeleteitemview.add(additem);
additem.addEventListener('click', function(e)
    {
        var item=e.source.getParent();
        squantity = e.source.squantity;
            squantity = Number(squantity) + 1;
            item.children[1].text = squantity;
            alert(item.children[1].getText());
我在这里得到了更新值正确的警报。但是它没有显示在标签上。你能给我一个用android解决这个问题的方法吗

编辑:

从VRK评论,我也尝试过这个。但它不起作用。但我得到了正确的警报

item.children[1].setText(squantity);
编辑:

我试着用简单的答案回答,但我找不到答案。在这里,我创建了tableview。在此tableview行中,我们正在创建视图。在该视图中,我添加了additem、itemcounttext值。如果单击additem,则表示需要更改itemcounttext值。这是一个流程

如下图所示,是我的应用程序tableview的子视图:

productname

remove     itemcount   add
image      text        image
这三个图像、文本和图像值添加到一个视图中。这就是为什么我在单击“添加图像”时添加获取父视图的代码:

var item=e.source.getParent();
我在这里获取父视图。我还编写了以下代码来获取此视图的标签:

item.children[1].text
如果我单击“添加图像”,我获取的标签值将正确增加1。我已使用此代码验证了
警报(item.children[1].getText())
;。 但是更新后的数值没有显示出来,这是我的怀疑

编辑:

这是我的全部源代码

 dataArray = [];       
 $.ViewCartItemslist_total_value.text = totalamount;
 for( var i=0; i<data.length; i++){ 
//在tableviewrow的每一行内部创建视图

 var row = Ti.UI.createTableViewRow({
 layout : 'horizontal',
 top:5,
 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,
 font: { fontSize: '10dp' },
 color: '#040404',
 wordWrap: true,
 height: Ti.UI.SIZE,
 ellipsize: true
 }));
 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,
 left:10,
 width: "15%",
 height: Ti.UI.SIZE,
 });
 adddeleteitemview.add(removeitem);
 var itemcounttext = Ti.UI.createLabel({
 top: 5,
 color: "#000000",
 left:10,
 text:data[i].itemCount,
 textAlign:'center',
 width: "15%",
 height: Ti.UI.SIZE,
 });
 adddeleteitemview.add(itemcounttext);

 var additem = Ti.UI.createImageView({
 image: "/images/plus.jpg",
 top: 5,
 width: "15%",
 left:10,
 squantity : data[i].itemCount,
 spprice :data[i].itemPrice,
 height: Ti.UI.SIZE,
 });
 adddeleteitemview.add(additem);
 additem.addEventListener('click', function(e)
    {
        var item=e.source.getParent();
        spprice = e.source.spprice;
        if(item.children[1].getText() == e.source.squantity){
        squantity = e.source.squantity;
          totalqty = Number(totalqty) + Number(1);
            $.ViewCartItemslist_header_cart.text = totalqty;
            totalamount = Number(totalamount) + Number((spprice));
            squantity = Number(squantity) + 1;
            item.children[1].text = squantity;
           // item.itemcounttext.text = squantity;
          // item.itemcounttext.setText(squantity);
           // item.children[1].setText(squantity);
            alert(item.children[1]+" "+item.children[1].getText());
            $.ViewCartItemslist_total_value.text = totalamount;
            totalprice = Number(spprice) * squantity;
        }
           else {
                squantity = item.children[1].getText();
            totalqty = Number(totalqty) + Number(1);
            $.ViewCartItemslist_header_cart.text = totalqty;
            totalamount = Number(totalamount) + Number((spprice));
            squantity = Number(squantity) + 1;
            item.children[1].text = squantity;
            item.children[1].setText(squantity);
            alert(item.children[1].getText());
            $.ViewCartItemslist_total_value.text = totalamount;
            totalprice = Number(spprice) * squantity;
            }
           });
       row.add(adddeleteitemview); 

      dataArray.push(row);
    row.addEventListener('click', function(e) {
    });
    $.ViewCartItemstableView.setData(dataArray);
     }

不要遍历父/子树,只需将itemcounttext设置为additem的属性:

var itemcounttext = Ti.UI.createLabel({
 top: 5,
 color: "#000000",
 left:10,
 text:data[i].itemCount,
 width: Ti.UI.SIZE,
 height: Ti.UI.SIZE
});

var additem = Ti.UI.createImageView({
 image: "/images/plus.jpg",
 top: 5,
 width: Ti.UI.SIZE,
 left:10,
 height: Ti.UI.SIZE,
});

additem.countTextLabel = itemcounttext;

adddeleteitemview.add(additem);

additem.addEventListener('click', function(e) {
 var item=e.source;
 var squantity = e.source.squantity;
 squantity = Number(squantity) + 1;
 item.countTextLabel.setText(squantity);
 alert(item.countTextLabel.getText());
});

一个下午的大部分时间里,我都在努力解决这个问题。希望这对某人有所帮助

在我的例子中,我有一个tableview,设计上只有一个自定义行。单击该行可以从不同的tableview中选择新值(名称和说明),然后使用新选择的值更新第一个tableview自定义行数据

对于有问题的tableview,我使用的是setData,但自定义行相当复杂,因此我不想在这些复杂行中重建一行。这是对我有用的东西。。。我刚刚更新了数据数组中的标签,这些标签包含在行中的包装器视图中。通过这种方式,我可以修改数组,然后重新设置数据,而不是从头开始重建所有数据数组。 数据状态[0]。子项[0]。子项[0]。text=sice.row.name
数据状态[0]。子项[0]。子项[1]。text=sice.row.statusdescription; tableviewStatus.setData(数据状态)

我只有1行,因此dataStatus[0]会对该行进行寻址。然后第一个子视图是包装视图,我计算了我的布局,包装的第一个子和第二个子视图是我需要更新的标签。然后在我修改了数组之后,我只是重拨了setData。像冠军一样工作


希望对某人有所帮助。

您试过item.children[1].setText(squantity)@VRK是的,尝试过。但它也不起作用。我看到itemcounttext已定义,但它没有在其他任何地方引用。在这段代码中,它不是这里定义的任何其他内容的父级或子级。为什么不让itemcounttext成为additem的属性?然后您可以添加Item.itemcounttext.setText(无论什么)。您是在模拟器、模拟器还是真实设备上进行测试?我试图复制你的错误,但是。。它在模拟器和设备上都很好。@KtorZ是的,我已经对所有模拟器、模拟器和真正的android设备(micromax和sony)进行了测试。但我在这些设备上遇到了这个问题。我仍然不认为itemcounttext是您代码中additem的父项或子项。不过没关系。而不是
item.counttextlab.setText(squantity)
,只需执行
itemcounttext.setText(squantity)。itemcounttext在事件侦听器的作用域中,不需要传递给它。它也已尝试。不工作…itemcounttext是附加项的同级项。