1

レイアウトに TextView と EditText があります。TextView は価格を表し、EditText は数量を表します。ユーザーが EditText に数値を入力すると、価格にその入力した数値を掛けて、TextView に表示したいと考えています。しかし、私はこれを達成することができません。以下は私のソースコードです。

        mEditTextQuantity = (EditText) rootView.findViewById(R.id.quantity_edit_text);
        mEditTextQuantity.setFilters(new InputFilter[]
        { new Ipfilters("1", "999") });
        mEditTextQuantity.setText("1");
        int position = mEditTextQuantity.length();
        Editable etext = mEditTextQuantity.getText();
        Selection.setSelection(etext, position);
        Utility.showKeypad(mEditTextQuantity, getActivity());
    mEditTextQuantity.setOnTouchListener(new OnTouchListener()
        {
            @Override
            public boolean onTouch(View v, MotionEvent event)
            {
                mEditTextQuantity.requestFocus();
                Utility.showKeypad(mEditTextQuantity, getActivity());
                int mtemp;
                mtemp=Integer.parseInt(mEditTextQuantity.getText().toString().trim());  
                NumberFormat nf = NumberFormat.getInstance();
                nf.setMinimumFractionDigits(2);
                double price = Double.parseDouble(mProductPriceTextView.getTag().toString());
                price = price * mtemp;
                mProductPriceTextView.setText(mCurrency + nf.format(price));
                return true; 
            }
        }); 

また、編集テキストの onKeyPreIme メソッドを介してそれを達成できることも理解していますが、そうすることができません。前もって感謝します。

4

3 に答える 3

1

あなたはそれを探しているかもしれません...

edtText.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int start, int before,  int count) {
          int   newPrice = price*Integer.parseInt(edtText.getText().toString());

            mProductPriceTextView.setText(""+newPrice);

        }

        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void afterTextChanged(Editable s) {


        }
    });
于 2013-08-05T14:10:59.780 に答える