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

enter image description here

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

Popular posts from this blog

angular - Ionic slides - dynamically add slides before and after -

minify - Minimizing css files -

Add a dynamic header in angular 2 http provider -