2013-02-01 117 views
1

我有3个纺纱厂在我的XML ..微调OnItemSelectedListener法在Android的问题

1. one is Product Name 
2. one is Product Quantity. 
3. and 3rd one is Discount 

现在,我呼吁单独的侦听器为每一个..问题是我想用项目的数量来计算最终的价格和我打电话给所有微调的人都是以我写的名字,数量和折扣相同的顺序。

尽管我上面写了Discount Spinner,但我最终调用了Quantity的监听器..我不知道发生了什么。任何人都会遇到这个问题...请帮助我..

这是我的微调监听器: -

spnSelectItem.setOnItemSelectedListener(new OnItemSelectedListener() 
     { 

      @Override 
      public void onItemSelected(AdapterView<?> arg0, View arg1, 
        int arg2, long arg3) 
      { 
       strItem=spnSelectItem.getItemAtPosition(arg2).toString();   } 

      @Override 
      public void onNothingSelected(AdapterView<?> arg0) { 
       // TODO Auto-generated method stub 

      } 
     }); 

      ///This method called last.. 
     spnQty.setOnItemSelectedListener(new OnItemSelectedListener() 
     { 

      @Override 
      public void onItemSelected(AdapterView<?> arg0, View arg1,int arg2, long arg3) 
      { 
       strQty=spnQty.getItemAtPosition(arg2).toString(); 

      @Override 
      public void onNothingSelected(AdapterView<?> arg0) { 
       // TODO Auto-generated method stub 

      } 
     }); 
    ///This method called before spnQty .. 
    spnItemDiscount.setOnItemSelectedListener(new OnItemSelectedListener() 
     { 
      @Override 
      public void onItemSelected(AdapterView<?> arg0, View arg1,int arg2, long arg3) 
      { 
       disc=round(Double.parseDouble(spnItemDiscount.getItemAtPosition(arg2).toString().replace("%", ""))); 

      } 

      @Override 
      public void onNothingSelected(AdapterView<?> arg0) { 
       // TODO Auto-generated method stub 

      } 
     }); 
+0

为什么不分享你的代码? –

+0

@DoctororDrive现在,检查我的代码.. –

+0

你必须像先处理后像管理点击下一个微调将同意点击,直到用户不能点击2微调或3微调 –

回答

4

为什么不创建一个单独的方法来执行所有的计算是这样的:

private void calculatePrice() { 
     String strItem = spnSelectItem.getSelectedItem().toString(); 
     String qty = spnQty.getSelectedItem().toString(); 
     String discount = spnItemDiscount.getSelectedItem().toString().replace("%", ""); 

     //perform calculate and update UI as you like 
    } 

,然后要么做一个监听所有三个纱厂或打电话给他们在他们所有,例如:

spnSelectItem.setOnItemSelectedListener(new OnItemSelectedListener() { 

     @Override 
     public void onItemSelected(AdapterView<?> arg0, View arg1, 
       int arg2, long arg3) { 

      //do some work, update UI or reset qty and discount spinner or whatever 
      strItem = spnSelectItem.getItemAtPosition(arg2).toString(); 

      //call calulcate method 
      calculatePrice(); 
     } 
    }); 
+0

所有三个Listeners(Spinner)自动在onCreate()中调用activity ..并且不按顺序调用.. –

+0

so?我没有看到他们被自动调用的问题? – Waqas

+0

我想根据Spinner值计算onCreate()中的值,因为我不想按顺序调用它,问题是我设置了1,2和3 spinner监听器,并且它按1,3,和2所以,我得到的第二个微调值是来自第三微调值的空值 –