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

2

为什么不尝试使用此处textChangedListener描述的 a ?您可以查看文本更改前后的内容,并根据结果进行修改。TextView

于 2013-08-05T14:05:51.947 回答
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 回答
0

第一个建议:不要使用OnTouchListener; 它将响应与编辑文本交互的所有触摸事件。

我没有立即在您的代码中看到任何会失败的内容,但也许看看它是否可以使用不同的触发器工作。此代码应响应用户点击“完成”或“输入”键。

mEditTextQuantity.setOnEditorActionListener(new OnEditorActionListener(){
    @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event){
        if(actionId == EditorInfo.IME_ACTION_DONE || event.getKeyCode() == KeyEvent.KEYCODE_ENTER){
            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; 
        }
        else
            return false;
    }//onEditorAction()
}

为了更好地了解您要查找的内容,您能否提供任何错误日志或任何可能告诉我们出了什么问题的信息?

于 2013-08-05T14:13:30.707 回答