2015-05-14 18 views
14

içinde titanyum.but kullanarak android lebel güncelleme/değiştirmeyi denedim ama metin üzerinde gösterilen değer değil. uyarı. Ama ios mükemmel çalışıyor.Etiket metni titanyum android.but işinde tablo görünümünde güncellenmiyor 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()); 

Doğru güncellenen değerle uyarı aldım. Ancak etikette gösterilmiyor. Android'de bu sorunu çözmek için bana bir fikir verebilir misiniz.

DÜZENLEME: ben bu o working.but doğru uyarısı alıyorum değil also.But denedi VRK yorumun itibaren

.

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

DÜZENLEME:

Ben jsplaine ile çalıştı answer.But i çözümü alınamıyor. Burada tablo görünümü oluşturduk. View.in oluşturduğumuz bu tableview satırında additem, itemcounttext değerlerini eklediğimizi görüyorum. Item.te biz additem tıklayarak itemcounttext değerini değiştirmemiz gerekiyor. Bu bir akış. ekran görüntüsü aşağıda gibi

benim app tableview çocuk görünümüdür:

bu üç resim, metin, resim değerleri neden eklemek tıklarken üst görünümü elde etmek için kod ekliyorum oluyor view.That birinde eklenmektedir
productname 

remove  itemcount add 
image  text  image 

resim:

item.children[1].text 
0: burada

var item=e.source.getParent(); 

parent.also am Bu görünüm için etiket almak için aşağıdaki kodu yazdım alıyorum

Resim ekle'yi tıklatırsam, etiket değeri 1 oranında artırılır. Am bu kodla doğrulanır alert(item.children[1].getText()); ama güncelleştirilmiş değer gösterilmiyor. Bu benim şüphemdir.

DÜZENLEME:

Bu benim tam kaynak kodudur.

dataArray = [];  
$.ViewCartItemslist_total_value.text = totalamount; 
for(var i=0; i<data.length; i++){ 

// tableviewrow oluşturarak

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 her her satır içi görünüm oluşturarak

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

item.children [1] .setText (squantity) ürününü denediniz mi? – VRK

+0

@VRK evet denedi. Ama aynı zamanda çalışmıyor. –

+0

Tanımlanan itemcounttext'i görüyorum, ancak başka bir yerde referans gösterilmiyor. Bu kodda, orada tanımlanan herhangi bir şeyin ebeveyni veya çocuğu değil. Neden itemcounttext özelliğini additem özelliği yapmıyorsunuz? Sonra additem.itemcounttext.setText (her neyse) olabilir. – jsplaine

cevap

3

yerine üst/alt ağacı yürüme sadece itemcounttext yapmak additem özelliği:

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()); 
}); 
+0

Hala kodunuzda itemcounttext öğesini ebeveyn veya çocuk additem olarak görmüyorum. Ama sorun değil. Item.countTextLabel.setText (squantity) yerine, '' itemcounttext.setText (squantity); 'yerine itemcounttext, olay dinleyicinizin kapsamındadır, ona aktarılmaya gerek yoktur. – jsplaine

+0

da denendi. Çalışmıyor ... itemcounttext bir additem'in kardeşi. –

0

Bir öğleden sonra daha iyi bir kısmı için bununla uğraştım. Umarım bu birilerine yardımcı olur.

Benim durumumda tasarımla sadece 1 özel sıra ile bir masa görüşmem vardı. Satır tıklandığında farklı bir tablo görünümünden yeni bir değer (isim ve açıklama) seçmeme izin verdim ve ardından yeni seçilen değerler ile ilk tableview özel satır verilerini güncelleyin.

Sorunlu bir tablo görünümü için setData kullanıyordum, ancak özel satırlar oldukça karmaşıktır, dolayısıyla bu karmaşık satırlardan birinin bir satırını yeniden oluşturmak zorunda kalmak istemedim. İşte benim için çalıştı ... satırda bulunan bir sarmalayıcı görünümünde bulunan veri dizisindeki etiketleri güncelledim. Bu şekilde, tüm veri dizisini sıfırdan yeniden inşa etmek yerine, diziyi değiştirebildim ve ardından verileri tekrar ayarlayabildim. dataStatus [0] .children [0] .children [0] .text = sice.row.name;
dataStatus [0] .children [0] .children [1] .text = sice.row.statusdescription; tableviewStatus.setData (dataStatus);

Sadece 1 satır var, dataStatus [0] bu satırı adresliyor. Sonra ilk çocuk sarmalayıcı görünümüdür ve düzenimi saydım ve sargının 1. ve 2. çocuğu güncellemem gereken etiketler. Sonra diziyi değiştirdikten sonra, setData'yı yeniden ayarlıyorum. Bir şampiyon gibi çalıştım.

Birilerine yardım edeceğini umarız.