gpt4 book ai didi

java - 在多个 EditText 上添加值并在每个 textchange 上获取总计

转载 作者:行者123 更新时间:2023-11-29 04:12:21 25 4
gpt4 key购买 nike

如何在不使用 Button 而仅使用 TextWatcher 的 onTextChanged() 方法的情况下对我的多个 EditText 求和。假设这是我的布局:

EditText1 = 5

EditText2 = 5

EditText3 = 5

EditText4 = 5

Total = 20

等等

并得到它的总数?当 EditText 的值发生变化时,总数应该是CHANGING

我已阅读 this回答。但我不能在我的程序中很好地执行它。

这是我的布局

enter image description here

最佳答案

您需要使用 TextWatcher()

无需使用 5 个 TextWatcher(),您可以仅使用一个 TextWatcher()

来管理它

试试这个

使用下面的答案,如果所有 4 个 edittext 都不为空,那么它将计算 editext 值的总和

public class MainActivity extends AppCompatActivity {


EditText edtOne, edtTwo, edtThree, edtFour;
TextView tvResult;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

edtOne = findViewById(R.id.edtOne);
edtTwo = findViewById(R.id.edtTwo);
edtThree = findViewById(R.id.edtThree);
edtFour = findViewById(R.id.edtFour);

tvResult = findViewById(R.id.tvResult);

edtOne.addTextChangedListener(textWatcher);
edtTwo.addTextChangedListener(textWatcher);
edtThree.addTextChangedListener(textWatcher);
edtFour.addTextChangedListener(textWatcher);

}

TextWatcher textWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

}

@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

if (!TextUtils.isEmpty(edtOne.getText().toString().trim())
|| !TextUtils.isEmpty(edtTwo.getText().toString().trim())
|| !TextUtils.isEmpty(edtThree.getText().toString().trim())
|| !TextUtils.isEmpty(edtFour.getText().toString().trim())
) {


int answer = Integer.parseInt(edtOne.getText().toString().trim()) +
Integer.parseInt(edtTwo.getText().toString().trim()) +
Integer.parseInt(edtThree.getText().toString().trim()) +
Integer.parseInt(edtFour.getText().toString().trim());

Log.e("RESULT", String.valueOf(answer));
tvResult.setText(String.valueOf(answer));
}else {
tvResult.setText("");
}
}

@Override
public void afterTextChanged(Editable editable) {

}
};

}

更新

如果你想计算所有 editext 的值,即使你的 editext 是空的也比尝试下面的 TextWatcher()

TextWatcher textWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

}

@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

if (!TextUtils.isEmpty(edtOne.getText().toString().trim())
|| !TextUtils.isEmpty(edtTwo.getText().toString().trim())
|| !TextUtils.isEmpty(edtThree.getText().toString().trim())
|| !TextUtils.isEmpty(edtFour.getText().toString().trim())
) {


int firtValue = TextUtils.isEmpty(edtOne.getText().toString().trim()) ? 0 : Integer.parseInt(edtOne.getText().toString().trim());
int secondValue = TextUtils.isEmpty(edtTwo.getText().toString().trim()) ? 0 : Integer.parseInt(edtTwo.getText().toString().trim());
int thirdValue = TextUtils.isEmpty(edtThree.getText().toString().trim()) ? 0 : Integer.parseInt(edtThree.getText().toString().trim());
int forthValue = TextUtils.isEmpty(edtFour.getText().toString().trim()) ? 0 : Integer.parseInt(edtFour.getText().toString().trim());

int answer = firtValue + secondValue + thirdValue + forthValue;

Log.e("RESULT", String.valueOf(answer));
tvResult.setText(String.valueOf(answer));
}else {
tvResult.setText("");
}
}

@Override
public void afterTextChanged(Editable editable) {

}
};

关于java - 在多个 EditText 上添加值并在每个 textchange 上获取总计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54361725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com