Текст ярлыка не обновляется в дочерних элементах таблицы в титане android.but работает в IOS

Я попытался обновить/изменить lebel в android с помощью titanium.but значение не отображается в тексте. Но я получаю обновленное значение в alert.But 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.

EDIT:

Из комментария VRK я тоже пробовал это. Но он не работает. Но я правильно получаю предупреждение.

item.children[1].setText(squantity);

EDIT:

Я попытался ответить на jsplaine. Но я не могу получить решение. Здесь я создал tableview. В этой таблице tableview мы создаем view.in в этом представлении у меня есть adidng additem, itemcounttext values.if, мы нажимаем additem, значит, нужно изменить значение itemcounttext. Это поток.

как показано ниже скриншотом, - просмотр детьми моего приложения tableview:

productname

remove     itemcount   add
image      text        image

это три изображения, текст, значения изображений добавляются в одном представлении. Вот почему я добавляю код для получения родительского представления при нажатии на изображение:

var item=e.source.getParent();

здесь я получаю parent.также я написал ниже код для получения метки для этого представления:

item.children[1].text

Если вы нажмете на добавление изображения, я получаю значение метки, которое выровнено 1 правильно .am проверен с помощью этого кода alert(item.children[1].getText());. но обновленное значение не отображается. Это мое точное сомнение.

EDIT:

Это мой полный исходный код.

 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
 }));

//создаем представление внутри каждой строки tableviewrow

 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);
     }

Ответы

Ответ 1

Вместо того, чтобы ходить с родительским/дочерним деревом, просто создайте 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());
});

Ответ 2

Я боролся с этим в течение большей части дня. Надеюсь, это поможет кому-то.

В моем случае у меня был табличный вид с только 1 пользовательской строкой по дизайну. Щелчок по строке позволил мне выбрать новое значение (имя и описание) из другого табличного представления, а затем обновить данные таблицы отдельных таблиц с новыми значениями.

Для проблемного представления таблицы я использовал setData, но пользовательские строки были довольно сложными, поэтому я не хотел перестраивать одну строку из одной из этих сложных строк. Вот что сработало для меня... Я просто обновил метки в массиве данных, которые содержатся в представлении оболочки, содержащемся в строке. Этот способ, а не восстановление всего массива данных с нуля, я смог изменить массив, а затем просто установить данные снова.                                                               dataStatus [0].children [0].children [0].text = sice.row.name;
dataStatus [0].children [0].children [1].text = sice.row.statusdescription; tableviewStatus.setData(dataStatus);

У меня есть только одна строка, поэтому dataStatus [0] адресует эту строку. Тогда первый ребенок - это представление оболочки, и я подсчитал свой макет, и 1-й и 2-й дочерние элементы оболочки - это метки, которые мне нужно обновить. Затем, после того как я изменил массив, я просто переделал setData. Работал как чемпион.

Надеюсь, что это поможет кому-то.