Edit text value change

I have 3 EditText Fields and submit button.Change of value in any EditText will modify value of other two EditText.Have applied setOnEditorActionListener and setOnFocusChangeListener but If user change one editText and click submit button then change in other editText will not happen. which listener to use.please help. Can I use addTextChangedListener in all three EditText.

remainingWorkEdit.setOnFocusChangeListener(new OnFocusChangeListener() {

        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            // TODO Auto-generated method stub
            String remainingWorkInput = remainingWorkEdit.getText()
                    .toString().trim();

            Float actualWorkCalculated = Float.parseFloat(actualWorkEdit
                    .getText().toString().trim());

            actualWorkEdit.setText(actualWorkCalculated.toString());
            Float percentageCalculated = actualWorkCalculated
                    / Float.parseFloat(workEdit.getText().toString().trim())
                    * 100;
            percentageEdit.setText(percentageCalculated.toString());
            Float workCalculated = Float.parseFloat(actualWorkEdit
                    .getText().toString().trim())
                    + Float.parseFloat(remainingWorkInput);
            workEdit.setText(workCalculated.toString());

        }
    });

    remainingWorkEdit
            .setOnEditorActionListener(new OnEditorActionListener() {

                @Override
                public boolean onEditorAction(TextView v, int actionId,
                        KeyEvent event) {
                    // TODO Auto-generated method stub
                    String remainingWorkInput = remainingWorkEdit.getText()
                            .toString().trim();
                    if (actionId == EditorInfo.IME_ACTION_NEXT
                            || actionId == EditorInfo.IME_ACTION_DONE) {

                        Float actualWorkCalculated = Float
                                .parseFloat(workEdit.getText().toString()
                                        .trim())
                                - Float.parseFloat(remainingWorkInput);
                        actualWorkEdit.setText(actualWorkCalculated
                                .toString());
                        Float percentageCalculated = actualWorkCalculated
                                / Float.parseFloat(workEdit.getText()
                                        .toString().trim()) * 100;
                        percentageEdit.setText(percentageCalculated
                                .toString());
                        Float workCalculated = Float
                                .parseFloat(actualWorkEdit.getText()
                                        .toString().trim())
                                + Float.parseFloat(remainingWorkInput);
                        workEdit.setText(workCalculated.toString());
                        return true;
                    }
                    return false;
                }
            });

Code is almost same for other two editText.

Upvotes: 0

Views: 920

Answers (1)

Mustanser Iqbal
Mustanser Iqbal

Reputation: 5097

You have to do something like this

remainingWorkEdit.addTextChangedListener(new TextWatcher()
{ 
    @Override
    public void onTextChanged(CharSequence s, int start, int before,int count) 
    {
        percentageEdit.setText(percentageCalculated.toString());

        workEdit.setText(workCalculated.toString());
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) 
    {
        // TODO Auto-generated method stub
    }

    @Override
    public void afterTextChanged(Editable s) 
    {
        // TODO Auto-generated method stub

    }
});

Upvotes: 1

Related Questions