How to Update the final value if user enters new Value with Android TextWatcher -
as i'm new android try learn things. excuse me if 'm asking silly questions.
how android app looks like.
i add new edittext field user can add value like(e.g. 3%), if likes. user entered value(e.g.3%) should calculate total value in result textview , value needs display in sub value textview field. example if total value in final result textview 1000 , user input 3%, sub value field displays 30. , final result needs update 1030. please me solve this. in advance
public class addtwo extends appcompatactivity { edittext edit1, edit2, edit3; edittext edit4, edit5, edit6; textview textviewsub1, textviewsub2, textviewsub3, textviewsub4, textviewresult; textview nbttext; edittext editnbt, vat; button btnnext; /** * called when activity first created. */ @override public void oncreate(bundle icicle) { super.oncreate(icicle); setcontentview(r.layout.activity_add_two); btnnext = (button) findviewbyid(r.id.button2); btnnext.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { gotonextpage(); } private void gotonextpage() { intent = new intent(addtwo.this, newclass.class); startactivity(i); } }); /*vat variables*/ editnbt = (edittext) findviewbyid(r.id.edittext11); /*first row variables*/ edit1 = (edittext) findviewbyid(r.id.edittext1); edit2 = (edittext) findviewbyid(r.id.edittext2); edit3 = (edittext) findviewbyid(r.id.edittext3); textviewsub1 = (textview) findviewbyid(r.id.textviewsub1); /*second row variables*/ edit4 = (edittext) findviewbyid(r.id.edittext5); edit5 = (edittext) findviewbyid(r.id.edittext6); edit6 = (edittext) findviewbyid(r.id.edittext7); textviewsub2 = (textview) findviewbyid(r.id.textviewsub2); /*final total textview variable*/ textviewresult = (textview) findviewbyid(r.id.textview_result); /*nbt value variable*/ nbttext = (textview) findviewbyid(r.id.textviewnbt12); edit1.addtextchangedlistener(new lashcustomtextwatcher()); edit2.addtextchangedlistener(new lashcustomtextwatcher()); edit3.addtextchangedlistener(new lashcustomtextwatcher()); edit4.addtextchangedlistener(new lashcustomtextwatcher()); edit5.addtextchangedlistener(new lashcustomtextwatcher()); edit6.addtextchangedlistener(new lashcustomtextwatcher()); textviewresult.addtextchangedlistener(new lashcustomtextwatcher()); } public class lashcustomtextwatcher implements 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) { textviewresult.settext(lashcalculate()); } @override public void aftertextchanged(editable editable) { textviewresult.settext(lashcalculate()); } } public string lashcalculate() { //declaring variables double row1_value = 0; double row2_value = 0; //optional values double row_nbt_value = 0; double row1_value_new = 0; decimalformat df = new decimalformat("0.00##"); //calculate first row if (!edit1.gettext().tostring().equals("") && !edit2.gettext().tostring().equals("")) { double num1 = double.parsedouble((edit1.gettext().tostring())); double num2 = double.parsedouble((edit2.gettext().tostring())); row1_value = num1 * num2; double num3 = 0; if (!edit3.gettext().tostring().equals("")) { num3 = double.parsedouble((edit3.gettext().tostring())); row1_value = (((100 - num3) * num2) * num1) / 100; } textviewsub1.settext(df.format(row1_value)); } //calculate second row if (!edit4.gettext().tostring().equals("") && !edit5.gettext().tostring().equals("")) { double num4 = double.parsedouble((edit4.gettext().tostring())); double num5 = double.parsedouble((edit5.gettext().tostring())); row2_value = num4 * num5; double num6 = 0; if (!edit6.gettext().tostring().equals("")) { num6 = double.parsedouble((edit6.gettext().tostring())); row2_value = (((100 - num6) * num5) * num4) / 100; } textviewsub2.settext(df.format(row2_value)); } /* ========================================================================== */ //calculate nbt double numnbt = 0; if (!editnbt.gettext().tostring().equals("")) { numnbt = double.parsedouble(editnbt.gettext().tostring()); row_nbt_value = numnbt / 100; if (row1_value !=0){ row1_value_new = row1_value * row_nbt_value; } nbttext.settext(df.format(row1_value_new)); } return df.format(row1_value_new + row2_value); } }
add line in code [updated] editnbt.addtextchangedlistener(new lashcustomtextwatcher()); change code in lashcalculate() method //calculate nbt double numnbt = 0; if (!textutils.isempty(editnbt.gettext().tostring())) { numnbt = double.parsedouble(editnbt.gettext().tostring()); row_nbt_value = numnbt / 100; if (row1_value != 0) { row1_value_new = row1_value * row_nbt_value; } nbttext.settext(df.format(row1_value_new)); } else { row1_value_new = row1_value; } return df.format(row1_value_new + row2_value);
Comments
Post a Comment