Reputation: 4255
I have 3 spinners in my xml..
1. one is Product Name
2. one is Product Quantity.
3. and 3rd one is Discount
Now, i calling separate Listener for each one.. the problem is i want to use item quantity to calculate final price and i called spinner in all in same sequence which is i wrote Name,Quantity and Discount..
The listener of Quantity is called at last even though i wrote above Discount Spinner..i don't know what's happening..can anybody ever face this problem...Please help me..
This is my Spinner Listener:-
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
}
});
Upvotes: 1
Views: 18231
Reputation: 6802
Why not create a separate method to perform all calculation like this:
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
}
and then either make a single listener for all of three spinners or call them in all of them, e.g.:
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();
}
});
Upvotes: 4