1

私のxmlには3つのスピナーがあります..

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

今、私はそれぞれに別々のリスナーを呼び出しています..問題は、アイテムの数量を使用して最終価格を計算したいことです.名前、数量、割引を書いた同じ順序ですべてスピナーを呼び出しました..

Quantity のリスナーは、Discount Spinner の上に書いたにもかかわらず、最後に呼び出されます..何が起こっているのかわかりません..誰かがこの問題に直面することはありますか..私を助けてください..

これは私のスピナーリスナーです:-

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

            }
        });
4

1 に答える 1

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
    }

次に、3 つのスピナーすべてに対して単一のリスナーを作成するか、それらすべてでそれらを呼び出します。次に例を示します。

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();
        }
    });
于 2013-02-01T11:41:38.847 に答える