package Ġvin ho . andre . android . com . ger enci ador vin ho . util . masks Ċ Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . widget . EditText Ċ import Ġjava . lang . ref . Weak Reference Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . text . NumberFormat Ċ import Ġjava . util .* Ċ Ċ class ĠMoney Text Watcher ( ĊĠĠĠ Ġedit Text : ĠEditText Ċ ) Ġ: ĠText Watcher Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlocale : ĠLocale ĊĠĠĠ Ġprivate Ġval Ġedit Text Weak Reference : ĠWeak Reference < EditText >? ĊĠĠĠ Ġprivate Ġval Ġsymbol Currency : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠNumber Format . getC urrency Instance ( locale ). currency !!. symbol ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . edit Text Weak Reference Ġ= ĠWeak Reference ( edit Text ) ĊĠĠĠĠĠĠĠ Ġthis . locale Ġ= ĠLocale . getDefault () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( ĊĠĠĠĠĠĠĠ Ġs : ĠCharSequence , ĊĠĠĠĠĠĠĠ Ġstart : ĠInt , ĊĠĠĠĠĠĠĠ Ġcount : ĠInt , ĊĠĠĠĠĠĠĠ Ġafter : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon TextChanged ( ĊĠĠĠĠĠĠĠ Ġs : ĠCharSequence , ĊĠĠĠĠĠĠĠ Ġstart : ĠInt , ĊĠĠĠĠĠĠĠ Ġbefore : ĠInt , ĊĠĠĠĠĠĠĠ Ġcount : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( editable : ĠEdit able ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġedit Text Ġ= Ġedit Text Weak Reference !!. get () Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġedit Text . remove TextChanged Listener ( this ) ĊĊĠĠĠĠĠĠĠ Ġval Ġparsed Ġ= Ġparse To BigDecimal ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġeditable . toString (). trim Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ<= Ġ' Ġ' ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġformatted Ġ= ĠNumber Format ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. getC urrency Instance ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocale ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparsed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). replace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ",", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsymbol Currency , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġedit Text . setText ( formatted ) ĊĠĠĠĠĠĠĠ Ġedit Text . setSelection ( formatted . length ) ĊĠĠĠĠĠĠĠ Ġedit Text . add TextChanged Listener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse To BigDecimal ( ĊĠĠĠĠĠĠĠ Ġvalue : ĠString ĊĠĠĠ Ġ): ĠBigDecimal Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreplace able Ġ= ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"[ % s ,. \\ s ]", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsymbol Currency ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġclean String Ġ= Ġvalue . replace ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreplace able . to Regex (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠBigDecimal ( clean String ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Scale ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBigDecimal . ROUND _ FLO OR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). divide ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBigDecimal ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBigDecimal . ROUND _ FLO OR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }