在andriod studio中使用Textwatcher时如何更新相同的edittext

问题描述 投票:0回答:1

当我在input_edittext中输入值时,它会在我编辑inputedittext应用程序时显示并终止显示后乘以并显示结果。请告诉我在aftertext change listerner中输入的代码应编辑该数字并再次显示结果。请任何人都可以解决这个问题


    <androidx.constraintlayout.widget.ConstraintLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginStart="8dp"
                android:orientation="vertical">


                <ImageView
                    android:id="@+id/imageViewitem1"
                    android:layout_width="80dp"
                    android:layout_height="80dp"
                    android:layout_marginTop="44dp"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintHorizontal_bias="0.0"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent"
                    app:srcCompat="@drawable/teacher" />

                <TextView
                    android:id="@+id/textviewweight1"
                    android:layout_width="63dp"
                    android:layout_height="49dp"
                    android:layout_marginStart="8dp"
                    android:text="13.3"
                    android:textAlignment="center"
                    android:textColor="#000"
                    android:textSize="18sp"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toBottomOf="@+id/imageViewitem1"
                    app:layout_constraintVertical_bias="0.0" />

    <TextView
                    android:id="@+id/textViewmulti1"
                    android:layout_width="52dp"
                    android:layout_height="35dp"
                    android:text="*"
                    android:textAlignment="center"
                    android:textColor="#000"
                    android:textSize="27sp"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintStart_toEndOf="@+id/imageViewitem1"
                    app:layout_constraintTop_toTopOf="parent"
                    app:layout_constraintVertical_bias="0.02">


                </TextView>

                <TextView
                    android:id="@+id/textViewequals1"
                    android:layout_width="52dp"
                    android:layout_height="35dp"
                    android:text="="
                    android:textAlignment="center"
                    android:textColor="#000"
                    android:textSize="27sp"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintHorizontal_bias="0.641"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent"
                    app:layout_constraintVertical_bias="0.019">


                </TextView>

                <EditText
                    android:id="@+id/textViewresult1"
                    android:layout_width="111dp"
                    android:layout_height="49dp"
                    android:background="@drawable/btnclientuse"
                    android:hint="result"
                    android:textAlignment="center"
                    app:layout_constraintBottom_toBottomOf="parent"
                    app:layout_constraintEnd_toEndOf="parent"
                    app:layout_constraintHorizontal_bias="0.979"
                    app:layout_constraintStart_toStartOf="parent"
                    app:layout_constraintTop_toTopOf="parent"
                    app:layout_constraintVertical_bias="0.016" />

```
TextWatcher textWatcher= new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence sequence, int start, int count, int after) {


            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

                Float v1 = Float.parseFloat(t1.getText().toString());
                Float v2 = Float.parseFloat(e1.getText().toString());

                Float calculateValue1 = (v1*v2);

                ee1.setText(calculateValue1.toString());


            }

            @Override
            public void afterTextChanged(Editable editable) {
                if(!editable.toString().startsWith("")){
                    editable.insert(0,"");
                }


            }
        };

        e1.addTextChangedListener(textWatcher);

    }

android image textview android-edittext textwatcher
1个回答
0
投票

当您调用setText时,它将再次触发onTextChanged。您需要删除textChangeListener,执行您的工作,然后再次进行设置:

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
    ee1.removeTextChangedListener(this);
    Float v1 = Float.parseFloat(t1.getText().toString());
    Float v2 = Float.parseFloat(e1.getText().toString());

    Float calculateValue1 = (v1*v2);

    ee1.setText(calculateValue1.toString());
    ee1.addTextChangedListener(this);
}
© www.soinside.com 2019 - 2024. All rights reserved.