Mehul Ranpara
Mehul Ranpara

Reputation: 4255

Spinner OnItemSelectedListener Method in Android issue

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

Answers (1)

Waqas
Waqas

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

Related Questions