package Ġcom . lo dz . android . agile dev kt . modules . collect Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġcom . big k oo . picker view . builder . Options Picker Builder Ċ import Ġcom . big k oo . picker view . builder . Time Picker Builder Ċ import Ġcom . lo dz . android . agile dev kt . R Ċ import Ġcom . lo dz . android . agile dev kt . bean . Person Type Bean Ċ import Ġcom . lo dz . android . agile dev kt . databinding . Activity Collect Binding Ċ import Ġcom . lo dz . android . agile dev kt . modules . main . MainActivity Ċ import Ġcom . lo dz . android . core kt . ank o . run On Main Delay Ċ import Ġcom . lo dz . android . core kt . ank o . toast Short Ċ import Ġcom . lo dz . android . core kt . utils . Date Utils Ċ import Ġcom . lo dz . android . pand ora . base . activity . Base Activity Ċ import Ġcom . lo dz . android . pand ora . utils . view binding . binding Layout Ċ import Ġcom . lo dz . android . pand ora . widget . collect . radio . Radio able Ċ import Ġkotlinx . coroutines . Main Scope Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList Ċ Ċ /** Ċ Ġ* Ġ éĩĩ éĽĨ æµĭè¯ķ é¡µ Ċ Ġ* Ġ@ author Ġz hou L Ċ Ġ* Ġ@ date Ġ 2 0 1 9 / 3 / 1 8 Ċ Ġ*/ Ċ class ĠCollect Activity Ġ: ĠBase Activity () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġstart ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠCollect Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġm Binding : ĠActivity Collect Binding Ġby Ġbinding Layout ( Activity Collect Binding :: inflate ) ĊĊĠĠĠ Ġ/** Ġ å§ĵ åĲį åĪĹè¡¨ Ġ*/ ĊĠĠĠ Ġprivate Ġval ĠNAME _ LIST Ġ= Ġarray ListOf (" å¼ł ä¸ī ", Ġ" æĿİ åĽĽ ", Ġ" çİĭ äºĶ ", Ġ" èµ µ åĽĽ ") ĊĠĠĠ Ġ/** Ġ æĢ§ åĪ« åĪĹè¡¨ Ġ*/ ĊĠĠĠ Ġprivate Ġval ĠS EX _ LIST Ġ= Ġarray ListOf (" çĶ· ", Ġ" å¥³ ", Ġ" æľª çŁ¥ ") ĊĠĠĠ Ġ/** Ġ äººåĳĺ ç±»åŀĭ åĪĹè¡¨ Ġ*/ ĊĠĠĠ Ġprivate Ġval ĠPER SON _ TYPE _ LIST Ġ= Ġarray ListOf (" æĪ· ç± į äººåĳĺ ", Ġ" æµģ åĬ¨ äººåĳĺ ", Ġ" å¢ĥ å¤ĸ äººåĳĺ ") ĊĠĠĠ Ġ/** Ġ è¿Ĳ åĬ¨ ç±»åŀĭ åĪĹè¡¨ Ġ*/ ĊĠĠĠ Ġprivate Ġval ĠS PORT _ TYPE _ LIST Ġ= Ġarray ListOf (" åĶ ± ", Ġ" è·³ ", Ġ" rap ", Ġ" ç¯ ® çĲĥ ") ĊĊĠĠĠ Ġoverride Ġfun Ġget View Binding Layout (): ĠView Ġ= Ġm Binding . root ĊĊĠĠĠ Ġoverride Ġfun Ġfind Views ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . find Views ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġget Title Bar Layout (). setTitle Name ( intent . getString Extra ( MainActivity . EXTRA _ TITLE _ NAME ) Ġ?: Ġ"") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick Back Btn () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onClick Back Btn () ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . set Listeners () ĊĠĠĠĠĠĠĠ Ġ// Ġ å§ĵ åĲį ĊĠĠĠĠĠĠĠ Ġm Binding . name C lt v . setOn Jump ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠOptions Picker Builder ( getContext ()) Ġ{ Ġoptions 1 , Ġoptions 2 , Ġoptions 3 , Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . name C lt v . setContent Text ( NAME _ LIST [ options 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Submit Text ( getString ( R . string . cl t _ confirm )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cancel Text ( getString ( R . string . cl t _ cancel )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle Text ( getString ( R . string . cl t _ name _ title )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . set Picker ( NAME _ LIST ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ æĢ§ åĪ« ĊĠĠĠĠĠĠĠ Ġm Binding . se xC lt v . setOn Content ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠOptions Picker Builder ( getContext ()) Ġ{ Ġoptions 1 , Ġoptions 2 , Ġoptions 3 , Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . se xC lt v . setContent Text ( SE X _ LIST [ options 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Submit Text ( getString ( R . string . cl t _ confirm )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cancel Text ( getString ( R . string . cl t _ cancel )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle Text ( getString ( R . string . cl t _ sex _ title )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . set Picker ( SE X _ LIST ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ åĩº çĶŁ æĹ¥æľŁ ĊĠĠĠĠĠĠĠ Ġm Binding . birth C lt v . setOn Content ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcalendar Ġ= ĠDate Utils . parse Format To Calendar ( Date Utils . TYPE _ 1 3 , Ġm Binding . birth C lt v . getContent Text ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( calendar Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠstartDate Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠendDate Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartDate . set ( startDate . get ( Calendar . YEAR ) Ġ- Ġ 1 0 0 , ĠCalendar . J AN U ARY , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠendDate . set ( endDate . get ( Calendar . YEAR ) Ġ+ Ġ 1 0 0 , ĠCalendar . DE CE MBER , Ġ 3 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠTime Picker Builder ( getContext ()) Ġ{ Ġdate , Ġv Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġif Ġ( date Ġ!= Ġnull ) ĠDate Utils . get Format String ( Date Utils . TYPE _ 1 3 , Ġdate ) Ġelse Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( time . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . birth C lt v . setContent Text ( time ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġage Ġ= ĠDate Utils . getCurrent Format String ( Date Utils . TYPE _ 1 4 ). toInt () Ġ- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDate Utils . change Format String ( Date Utils . TYPE _ 1 3 , ĠDate Utils . TYPE _ 1 4 , Ġtime ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Binding . age C lt v . setContent Text ( if Ġ( age Ġ>= Ġ 0 ) Ġage . toString () Ġelse Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle Text ( getString ( R . string . cl t _ birth _ title )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setDate ( calendar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set R ang Date ( startDate , ĠendDate ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setType ( boolean ArrayOf ( true , Ġtrue , Ġfalse , Ġfalse , Ġfalse , Ġfalse )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setLabel (" å¹´ ", Ġ" æľĪ ", Ġ" æĹ¥ ", Ġ" æĹ¶ ", Ġ" åĪĨ ", Ġ" ç§Ĵ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. is Cyc lic ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ å¤ĩ æ³¨ ĊĠĠĠĠĠĠĠ Ġm Binding . remark C edit . setOn Input Text Limit Ġ{ Ġs , Ġstart , Ġbefore , Ġcount , Ġmax Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast Short (" åıªèĥ½ è¾ĵåħ¥ ${ max } åŃĹ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠæıĲ äº¤ æĮīéĴ® ĊĠĠĠĠĠĠĠ Ġm Binding . submit Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Binding . name C lt v . getContent Text (). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast Short ( R . string . cl t _ name _ tips ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Binding . se xC lt v . getContent Text (). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast Short ( R . string . cl t _ sex _ hint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Binding . birth C lt v . getContent Text (). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast Short ( R . string . cl t _ birth _ hint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Binding . h obby C edit . getContent Text (). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast Short ( R . string . cl t _ h obby _ tips ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! m Binding . person Type C rg . isSelected Id ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast Short ( R . string . cl t _ person _ type _ tips ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast Short ( R . string . cl t _ success ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Main Delay ( 5 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast Short (" æıĲäº¤ å®ĮæĪĲ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . init Data () ĊĠĠĠĠĠĠĠ Ġm Binding . person Type C rg . setData List ( get Person TypeList ()) ĊĠĠĠĠĠĠĠ Ġm Binding . sport Type C rg . setData List ( getS port TypeList ()) ĊĠĠĠĠĠĠĠ Ġshow Status Completed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġèİ·åıĸ äººåĳĺ ç±»åŀĭ åĪĹè¡¨ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Person TypeList (): ĠMutable List < Radio able > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist : ĠMutable List < Radio able > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ ĠPER SON _ TYPE _ LIST . forEach Indexed Ġ{ Ġindex , Ġtype Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġperson Type Bean Ġ= ĠPerson Type Bean () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperson Type Bean . id Ġ= Ġindex . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperson Type Bean . name Ġ= Ġtype ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( person Type Bean ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** Ġèİ·åıĸ è¿Ĳ åĬ¨ ç±»åŀĭ åĪĹè¡¨ Ġ*/ ĊĠĠĠ Ġprivate Ġfun ĠgetS port TypeList (): ĠMutable List < Radio able > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist : ĠMutable List < Radio able > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ ĠS PORT _ TYPE _ LIST . forEach Indexed Ġ{ Ġindex , Ġtype Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġperson Type Bean Ġ= ĠPerson Type Bean () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperson Type Bean . id Ġ= Ġindex . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġperson Type Bean . name Ġ= Ġtype ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( person Type Bean ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ} Ċ Ċ }