在 android 中添加编辑文本的值
Adding the values of the edittext in android
我有五个 edittext 字段,我将在其中输入金额值和一个单独的字段来显示总金额。比如说,我在第一个字段中输入 2000,然后单击第二个字段,将在总计字段中设置 2000。同样,如果我在第二个字段中输入 1500,则第一个和第二个的总和应设置为总字段,即 3500。同样,我需要在焦点更改时设置的所有五个字段总数。
int total = 0;
int val = 0;
monthly_rent_et.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
System.out.println("Calc "+Integer.valueOf(monthly_rent_et.getText().toString()));
val = val + total+Integer.valueOf(monthly_rent_et.getText().toString());
total_et.setText(String.valueOf(val));
}
}
});
water_et.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
System.out.println("Calc "+Integer.valueOf(water_et.getText().toString()));
val = val + total+Integer.valueOf(water_et.getText().toString());
total_et.setText(String.valueOf(val));
}
}
});
此代码为我提供了答案,但在编辑金额时,旧值和编辑后的值都会被添加。如何解决这个问题?有没有更好的方法来做这个计算?
不是将当前值添加到现有总值,而是从所有 EditText
中获取值,然后将总计设置为总计 EditText
。
例如:
water_et.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
int final =0;
final+=getValue(et1.getText().toString()); //Add the first edittext value
final+=getValue(et2.getText().toString()); //Add the second edittext value
final+=getValue(et3.getText().toString()); //Add the third edittext value
final+=getValue(et4.getText().toString()); //Add the forth edittext value
final+=getValue(et5.getText().toString()); //Add the fifth edittext value
total_et.setText(String.valueOf(final));
}
}
});
public int getValue(String text)){
if(TextUtils.isEmpty(text){
return 0;
}
return Integer.valueOf(text);
}
创建一个数组来包含所有五个 editTexts
以减少您的代码并像这样进行计算:
EditText[] editTexts;
@Override
protected void onCreate(Bundle savedInstanceState) {
// After setting contentView and other initialisations
editTexts = new EditText[] {monthly_rent_et, water_et, ....};
for (int i=0 ; i<editTexts.length ; i++) {
editTexts[i].setOnFocusChangeListener(mFocusChangeListener);
}
}
private View.OnFocusChangeListener mFocusChangeListener = new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
int total = 0;
for (int i=0 ; i<editTexts.length ; i++) {
try {
total += Integer.valueOf(editTexts[i].getText().toString());
} catch(Exception e) {}
}
total_et.setText(total + "");
}
};
Edittext1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Total.setText(Edittext1.getText().toString());
}
});
Edittext2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Total.setText(Edittext1.getText().toString() + Edittext2.getText().toString());
}
});
像 Wise 一样,您可以更改代码
你的代码应该是这样的
public class CalculatorActivity extends Activity implements View.OnFocusChangeListener{
private EditText et1;
private EditText et2;
private EditText et3;
private EditText et4;
private EditText et5;
private EditText resultet;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculator);
et1 =(EditText)findViewById(R.id.et1);
et2 =(EditText)findViewById(R.id.et2);
et3 =(EditText)findViewById(R.id.et3);
et4 =(EditText)findViewById(R.id.et4);
et5 =(EditText)findViewById(R.id.et5);
resultet = (EditText)findViewById(R.id.resultet);
et1.setOnFocusChangeListener(this);
et2.setOnFocusChangeListener(this);
et3.setOnFocusChangeListener(this);
et4.setOnFocusChangeListener(this);
et5.setOnFocusChangeListener(this);
}
@Override
public void onFocusChange(View view, boolean b) {
if(!b) {
int sum = sumAllEditTextValues();
resultet.setText(sum);
}
}
int sumAllEditTextValues(){
int result =0;
result+=parseLieniant(et1.getText().toString());
result+=parseLieniant(et2.getText().toString());
result+=parseLieniant(et3.getText().toString());
result+=parseLieniant(et4.getText().toString());
result+=parseLieniant(et5.getText().toString());
return 0;
}
private int parseLieniant(String s ){
int result = 0;
try{
result = Integer.parseInt(s);
}catch(Exception e){
}
return result;
}
}
我有五个 edittext 字段,我将在其中输入金额值和一个单独的字段来显示总金额。比如说,我在第一个字段中输入 2000,然后单击第二个字段,将在总计字段中设置 2000。同样,如果我在第二个字段中输入 1500,则第一个和第二个的总和应设置为总字段,即 3500。同样,我需要在焦点更改时设置的所有五个字段总数。
int total = 0;
int val = 0;
monthly_rent_et.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
System.out.println("Calc "+Integer.valueOf(monthly_rent_et.getText().toString()));
val = val + total+Integer.valueOf(monthly_rent_et.getText().toString());
total_et.setText(String.valueOf(val));
}
}
});
water_et.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
System.out.println("Calc "+Integer.valueOf(water_et.getText().toString()));
val = val + total+Integer.valueOf(water_et.getText().toString());
total_et.setText(String.valueOf(val));
}
}
});
此代码为我提供了答案,但在编辑金额时,旧值和编辑后的值都会被添加。如何解决这个问题?有没有更好的方法来做这个计算?
不是将当前值添加到现有总值,而是从所有 EditText
中获取值,然后将总计设置为总计 EditText
。
例如:
water_et.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
int final =0;
final+=getValue(et1.getText().toString()); //Add the first edittext value
final+=getValue(et2.getText().toString()); //Add the second edittext value
final+=getValue(et3.getText().toString()); //Add the third edittext value
final+=getValue(et4.getText().toString()); //Add the forth edittext value
final+=getValue(et5.getText().toString()); //Add the fifth edittext value
total_et.setText(String.valueOf(final));
}
}
});
public int getValue(String text)){
if(TextUtils.isEmpty(text){
return 0;
}
return Integer.valueOf(text);
}
创建一个数组来包含所有五个 editTexts
以减少您的代码并像这样进行计算:
EditText[] editTexts;
@Override
protected void onCreate(Bundle savedInstanceState) {
// After setting contentView and other initialisations
editTexts = new EditText[] {monthly_rent_et, water_et, ....};
for (int i=0 ; i<editTexts.length ; i++) {
editTexts[i].setOnFocusChangeListener(mFocusChangeListener);
}
}
private View.OnFocusChangeListener mFocusChangeListener = new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
int total = 0;
for (int i=0 ; i<editTexts.length ; i++) {
try {
total += Integer.valueOf(editTexts[i].getText().toString());
} catch(Exception e) {}
}
total_et.setText(total + "");
}
};
Edittext1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Total.setText(Edittext1.getText().toString());
}
});
Edittext2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Total.setText(Edittext1.getText().toString() + Edittext2.getText().toString());
}
});
像 Wise 一样,您可以更改代码
你的代码应该是这样的
public class CalculatorActivity extends Activity implements View.OnFocusChangeListener{
private EditText et1;
private EditText et2;
private EditText et3;
private EditText et4;
private EditText et5;
private EditText resultet;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculator);
et1 =(EditText)findViewById(R.id.et1);
et2 =(EditText)findViewById(R.id.et2);
et3 =(EditText)findViewById(R.id.et3);
et4 =(EditText)findViewById(R.id.et4);
et5 =(EditText)findViewById(R.id.et5);
resultet = (EditText)findViewById(R.id.resultet);
et1.setOnFocusChangeListener(this);
et2.setOnFocusChangeListener(this);
et3.setOnFocusChangeListener(this);
et4.setOnFocusChangeListener(this);
et5.setOnFocusChangeListener(this);
}
@Override
public void onFocusChange(View view, boolean b) {
if(!b) {
int sum = sumAllEditTextValues();
resultet.setText(sum);
}
}
int sumAllEditTextValues(){
int result =0;
result+=parseLieniant(et1.getText().toString());
result+=parseLieniant(et2.getText().toString());
result+=parseLieniant(et3.getText().toString());
result+=parseLieniant(et4.getText().toString());
result+=parseLieniant(et5.getText().toString());
return 0;
}
private int parseLieniant(String s ){
int result = 0;
try{
result = Integer.parseInt(s);
}catch(Exception e){
}
return result;
}
}