2013-01-15 23 views
0

我已創建列表的LinearLayoutSetOnClickListener與我的代碼更改視圖列表的LinearLayout

String[] name = {"Chicken", "Beef", "Milk" ,"Juice"}; 
    final Integer[] price = {10, 50, 5, 3}; 
    final Integer[] qty = {1, 2, 5, 5}; 

    listOrder.removeAllViews(); 
    LinearLayout.LayoutParams image = new LinearLayout.LayoutParams(Utility.getDip(175, CartActivity.this), Utility.getDip(70, CartActivity.this)); 
    LinearLayout.LayoutParams text = new LinearLayout.LayoutParams(Utility.getDip(140, CartActivity.this), Utility.getDip(80, CartActivity.this)); 
    LinearLayout.LayoutParams textQty = new LinearLayout.LayoutParams(Utility.getDip(100, CartActivity.this), Utility.getDip(80, CartActivity.this)); 
    LinearLayout.LayoutParams textPrice = new LinearLayout.LayoutParams(Utility.getDip(125, CartActivity.this), Utility.getDip(80, CartActivity.this)); 
    LinearLayout.LayoutParams textTotal = new LinearLayout.LayoutParams(Utility.getDip(130, CartActivity.this), Utility.getDip(80, CartActivity.this)); 
    LinearLayout.LayoutParams editImage = new LinearLayout.LayoutParams(Utility.getDip(40, CartActivity.this), Utility.getDip(40, CartActivity.this)); 
    for(int i = 0; i < 4; i++){ 
     list = new LinearLayout(ctx); 
     list.setOrientation(LinearLayout.HORIZONTAL); 
     //if((i % 2) == 0) list.setBackgroundColor(R.color.bg_grey); 

     listImage = new ImageView(ctx); 
     //listImage.setImageDrawable(getResources().getDrawable(R.drawable.sample_logo_publisher)); 
     listImage.setBackgroundColor(getResources().getColor(R.color.bg_grey)); 
     listImage.setAdjustViewBounds(Boolean.TRUE); 
     listImage.setScaleType(ScaleType.FIT_XY); 

     image.gravity = Gravity.CENTER; 
     image.setMargins(Utility.getDip(10, CartActivity.this), 0, Utility.getDip(10, CartActivity.this), 0); 
     list.addView(listImage, image); 

     listText = new TextView(ctx); 
     listText.setText(name[i]); 
     listText.setGravity(Gravity.CENTER); 
     text.gravity = Gravity.CENTER; 
     text.setMargins(Utility.getDip(10, CartActivity.this), 0, 0, 0); 
     list.addView(listText, text); 

     listQty = new TextView(ctx); 
     listQty.setText(qty[i].toString()); 
     listQty.setGravity(Gravity.CENTER); 
     textQty.gravity = Gravity.CENTER; 
     textQty.setMargins(Utility.getDip(5, CartActivity.this), 0, Utility.getDip(5, CartActivity.this), 0); 
     list.addView(listQty, textQty); 

     listPrice = new TextView(ctx); 
     listPrice.setText(price[i].toString()); 
     listPrice.setGravity(Gravity.CENTER_VERTICAL); 
     textPrice.gravity = Gravity.CENTER; 
     list.addView(listPrice, textPrice); 

     Integer total = qty[i]*price[i]; 
     listTotal = new TextView(ctx); 
     listTotal.setText(total.toString()); 
     listTotal.setGravity(Gravity.CENTER_VERTICAL); 
     textTotal.gravity = Gravity.CENTER; 
     textTotal.setMargins(Utility.getDip(5, CartActivity.this), 0, Utility.getDip(2, CartActivity.this), 0); 
     list.addView(listTotal, textTotal); 

     plus = new ImageView(ctx); 
     plus.setImageDrawable(getResources().getDrawable(R.drawable.plus)); 
     plus.setAdjustViewBounds(Boolean.TRUE); 
     plus.setScaleType(ScaleType.FIT_XY); 
     editImage.gravity = Gravity.CENTER; 
     list.addView(plus, editImage); 
     final int pos = i; 
     plus.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       qty[pos] = qty[pos] + 1; 
       listQty.setText(qty[pos].toString()); 
       listTotal.setText(""+ (qty[pos]*price[pos])); 
      } 
     }); 

     minus = new ImageView(ctx); 
     minus.setImageDrawable(getResources().getDrawable(R.drawable.min)); 
     minus.setAdjustViewBounds(Boolean.TRUE); 
     minus.setScaleType(ScaleType.FIT_XY); 
     editImage.gravity = Gravity.CENTER; 
     list.addView(minus, editImage); 

     remove = new ImageView(ctx); 
     remove.setImageDrawable(getResources().getDrawable(R.drawable.trash)); 
     remove.setAdjustViewBounds(Boolean.TRUE); 
     remove.setScaleType(ScaleType.FIT_XY); 
     editImage.gravity = Gravity.CENTER; 
     list.addView(remove, editImage); 

     listOrder.addView(list); 
    } 

我要當的onclick上加圖片加量。但是當我在列表中單擊加號圖像時,textQty在列表的末尾發生了變化,而不是在單擊圖像的同一列表中。

如何解決我的代碼?

+0

的clicklistener設置變量設置ID。 – anthropomo

回答

0

我已經解決了我的問題。這裏是我的代碼...
我listQty和listTotal

listQty = new TextView(ctx); 
listQty.setId(99000+i); 
listQty.setText(qty[i].toString()); 
listQty.setGravity(Gravity.CENTER); 
textQty.gravity = Gravity.CENTER; 
textQty.setMargins(Utility.getDip(5, CartActivity.this), 0, Utility.getDip(5, CartActivity.this), 0); 
list.addView(listQty, textQty); 

listTotal = new TextView(ctx); 
listTotal.setId(98000+i); 
listTotal.setText(total.toString()); 
listTotal.setGravity(Gravity.CENTER_VERTICAL); 
textTotal.gravity = Gravity.CENTER; 
textTotal.setMargins(Utility.getDip(5, CartActivity.this), 0, Utility.getDip(2, CartActivity.this), 0); 
list.addView(listTotal, textTotal); 

和我將開始從您的佈局分開你的邏輯listQty和listTotal

plus = new ImageView(ctx); 
plus.setImageDrawable(getResources().getDrawable(R.drawable.plus)); 
plus.setAdjustViewBounds(Boolean.TRUE); 
plus.setScaleType(ScaleType.FIT_XY); 
editImage.gravity = Gravity.CENTER; 
list.addView(plus, editImage); 
final int pos = i; 
plus.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    // TODO Auto-generated method stub 
     listQty = (TextView)findViewById(99000+pos); 
     listTotal = (TextView)findViewById(98000+pos); 
     qty[pos] = qty[pos] + 1; 
     listQty.setText(qty[pos].toString()); 
     listTotal.setText(""+ (qty[pos]*price[pos])); 
    } 
}); 
0

您需要將TextViews和按鈕鏈接在一起。他們不知道它們處於for循環的相同迭代中。

當你通過你的循環時,你可以把每一組按鈕和文字視圖放到一個數組中。

然後在你的onClickListener你會爲這樣做:

for(int i = 0; i < buttonArray.length; i++){ 
    if(v == buttonArray[i]){ 
     // make whatever changes to TextViews at index i 
    } 
} 
+0

謝謝anthropomo,但我用自己的代碼解決了我的問題。 – ihsanhf