Текст ярлыка не обновляется в дочерних элементах таблицы в титане 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. Работал как чемпион.
Надеюсь, что это поможет кому-то.