package Ġcom . sel jab ali . practice problems . ui . ph oned ial er Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroid . widget . Toast Ċ import Ġcom . sel jab ali . practice problems . Base Fragment Ċ import Ġcom . sel jab ali . practice problems . R Ċ import Ġkotlinx . android . synt hetic . main . fragment _ phone _ dial er .* Ċ import Ġjava . util . ArrayList Ċ import Ġjava . util . HashMap Ċ Ċ class ĠPhone Dial er Fragment Ġ: ĠBase Fragment () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTAG Ġ= ĠPhone Dial er Fragment :: class . java . simple Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlateinit Ġvar Ġnumber To Characters Map : ĠHashMap < Int , ĠList < String >> ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġnumber To Characters Map Ġ= ĠHashMap () ĊĠĠĠĠĠĠĠ Ġnumber To Characters Map [ 2 ] Ġ= ĠlistOf (" A ", Ġ" B ", Ġ" C ") ĊĠĠĠĠĠĠĠ Ġnumber To Characters Map [ 3 ] Ġ= ĠlistOf (" D ", Ġ" E ", Ġ" F ") ĊĠĠĠĠĠĠĠ Ġnumber To Characters Map [ 4 ] Ġ= ĠlistOf (" G ", Ġ" H ", Ġ" I ") ĊĠĠĠĠĠĠĠ Ġnumber To Characters Map [ 5 ] Ġ= ĠlistOf (" J ", Ġ" K ", Ġ" L ") ĊĠĠĠĠĠĠĠ Ġnumber To Characters Map [ 6 ] Ġ= ĠlistOf (" M ", Ġ" N ", Ġ" O ") ĊĠĠĠĠĠĠĠ Ġnumber To Characters Map [ 7 ] Ġ= ĠlistOf (" P ", Ġ" Q ", Ġ" R ", Ġ" S ") ĊĠĠĠĠĠĠĠ Ġnumber To Characters Map [ 8 ] Ġ= ĠlistOf (" T ", Ġ" U ", Ġ" V ") ĊĠĠĠĠĠĠĠ Ġnumber To Characters Map [ 9 ] Ġ= ĠlistOf (" W ", Ġ" X ", Ġ" Y ", Ġ" Z ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ phone _ dial er , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġclear Button . setOnClickListener Ġ{ Ġon Clear Clicked () Ġ} ĊĠĠĠĠĠĠĠ Ġcalculate Button . setOnClickListener Ġ{ Ġon Calculate Clicked () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġinput AT ext View !!. request Focus () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreset Texts () Ġ{ ĊĠĠĠĠĠĠĠ Ġinput AT ext View !!. setText ("") ĊĠĠĠĠĠĠĠ Ġresults TextView !!. text Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġinput AT ext View !!. request Focus () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Possible Words Entered ( text A : ĠString ): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( text A . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠArrayList () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġlists Of Letters Per Numbers Entered Ġ= Ġget Lists Of Letters Per Numbers ( text A ) ĊĠĠĠĠĠĠĠ Ġreturn Ġget Possible Words Entered ( lists Of Letters Per Numbers Entered , Ġ"") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Possible Words Entered ( ĊĠĠĠĠĠĠĠ Ġremaining Letter Lists : ĠList < List < String >> ?, ĊĠĠĠĠĠĠĠ Ġinter medi ary Word : ĠString ĊĠĠĠ Ġ): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( remaining Letter Lists ?. isEmpty () Ġ!= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( inter medi ary Word ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġinter medi ary Words Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Letter List Ġ= Ġremaining Letter Lists [ 0 ] ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġcurrent Letter List . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Letter Ġ= Ġcurrent Letter List [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinter medi ary Words . addAll ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Possible Words Entered ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremaining Letter Lists . sub List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremaining Letter Lists . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġinter medi ary Word Ġ+ Ġcurrent Letter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġinter medi ary Words ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Lists Of Letters Per Numbers ( numbers As Text : ĠString ): ĠArrayList < List < String >> ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( numbers As Text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval ĠlistOf Letters Ġ= ĠArrayList < List < String >>() ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġnumbers As Text . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Number Ġ= ĠInteger . valueOf ( numbers As Text . substring ( i , Ġi Ġ+ Ġ 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( number To Characters Map . containsKey ( current Number )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf Letters . add ( number To Characters Map [ current Number ] !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf Letters ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġon Clear Clicked () Ġ{ ĊĠĠĠĠĠĠĠ Ġreset Texts () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġon Calculate Clicked () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtext A Ġ= Ġinput AT ext View !!. text . toString () ĊĠĠĠĠĠĠĠ Ġif Ġ( text A . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , ĠR . string . enter _ value , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġhide Keyboard ( context , Ġview ) ĊĠĠĠĠĠĠĠ Ġval Ġpossible Texts Entered Ġ= Ġget Possible Words Entered ( text A ) ĊĠĠĠĠĠĠĠ Ġresults TextView !!. text Ġ= ĠgetList Flatten ed (", Ġ", Ġpossible Texts Entered ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Keyboard ( context : ĠContext ?, Ġview : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġ== Ġnull Ġ|| Ġview Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġinput Method Manager Ġ= Ġcontext . getSystem Service ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContext . INPUT _ METHOD _ SERVICE ĊĠĠĠĠĠĠĠ Ġ) Ġas ĠInput Method Manager ĊĠĠĠĠĠĠĠ Ġinput Method Manager . hide Soft Input From Window ( view . window Token , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetList Flatten ed ( delimiter : ĠString , Ġstring List : ĠList < String >): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( string List . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval ĠstringBuilder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġstring List . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent String Ġ= Ġstring List [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current String . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ( current String ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ+ Ġ 1 Ġ!= Ġstring List . size Ġ&& Ġ( string List [ i Ġ+ Ġ 1 ]). isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ( delimiter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠstringBuilder . toString () ĊĠĠĠ Ġ} Ċ }