package Ġcom . example . future weather . ui . manage Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . Relative Layout Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . air bnb . lott ie . Lot tie Animation View Ċ import Ġcom . example . future weather . R Ċ import Ġcom . example . future weather . extension . show Toast Ċ import Ġcom . example . future weather . logic . model . Place Response Ċ import Ġcom . example . future weather . ui . weather . Weather Activity Ċ import Ġcom . example . future weather . widget . Di y Dialog Ċ import Ġkotlinx . android . synt hetic . main . activity _ weather .* Ċ import Ġjava . util .* Ċ Ċ class ĠManage Place Adapter ( ĊĠĠĠ Ġprivate Ġval Ġfragment : ĠManage Fragment , ĊĠĠĠ Ġprivate Ġval Ġplace List : ĠArrayList < Place Response . Place > Ċ ) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < Manage Place Adapter . ViewHolder >() Ġ{ ĊĊĠĠĠ Ġinner Ġclass ĠViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplace Name : ĠTextView Ġ= Ġview . findViewById ( R . id . place Name ) ĊĠĠĠĠĠĠĠ Ġval Ġplace Address : ĠTextView Ġ= Ġview . findViewById ( R . id . place Address ) ĊĠĠĠĠĠĠĠ Ġval Ġrefresh Weather Btn : ĠImageView Ġ= Ġview . findViewById ( R . id . refresh Weather Btn ) ĊĠĠĠĠĠĠĠ Ġval Ġmanage Delete Btn : ĠTextView Ġ= Ġview . findViewById ( R . id . manage Delete Btn ) ĊĠĠĠĠĠĠĠ Ġval Ġset Location Btn : ĠTextView Ġ= Ġview . findViewById ( R . id . setLocation Btn ) ĊĠĠĠĠĠĠĠ Ġval Ġplace Info Layout : ĠRelative Layout Ġ= Ġview . findViewById ( R . id . place Info Layout ) ĊĠĠĠĠĠĠĠ Ġval Ġoperating Layout : ĠLinearLayout Ġ= Ġview . findViewById ( R . id . operating Layout ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ). inflate ( R . layout . manage _ place _ item , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġholder Ġ= ĠViewHolder ( view ) ĊĠĠĠĠĠĠĠ Ġholder . manage Delete Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Delete Dialog ( parent . context , Ġholder . adapter Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . operating Layout . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġholder . setLocation Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Location Dialog ( parent . context , Ġholder . adapter Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . operating Layout . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġholder . refresh Weather Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġholder . adapter Position ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplace Ġ= Ġplace List [ position ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġfragment . activity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity Ġis ĠWeather Activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . drawer Layout . close Draw ers () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . viewModel . location Lng Ġ= Ġplace . location . lng ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . viewModel . location Lat Ġ= Ġplace . location . lat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . viewModel . place Name Ġ= Ġplace . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . refresh Weather () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġholder . place Info Layout . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( holder . operating Layout . visibility Ġ== ĠView . GONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . operating Layout . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( holder . operating Layout . visibility Ġ== ĠView . VISIBLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . operating Layout . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġholder ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġplace List . size ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplace Info Ġ= Ġplace List [ position ] ĊĠĠĠĠĠĠĠ Ġholder . place Name . text Ġ= Ġplace Info . name ĊĠĠĠĠĠĠĠ Ġholder . place Address . text Ġ= Ġplace Info . address ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Delete Dialog ( context : ĠContext , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdi y Dialog View Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( context ). inflate ( R . layout . dialog _ di y _ layout , Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġconfirm Btn Ġ= Ġdi y Dialog View . findViewById < TextView >( R . id . confirm _ button ) ĊĠĠĠĠĠĠĠ Ġval Ġcancel Btn Ġ= Ġdi y Dialog View . findViewById < TextView >( R . id . cancel _ button ) ĊĠĠĠĠĠĠĠ Ġval Ġcontent Text Ġ= Ġdi y Dialog View . findViewById < TextView >( R . id . content _ text ) ĊĠĠĠĠĠĠĠ Ġval Ġcontent Animation Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdi y Dialog View . findViewById < Lot tie Animation View >( R . id . content _ animation ) ĊĠĠĠĠĠĠĠ Ġconfirm Btn . text Ġ= Ġfragment . getString ( R . string . note _ delete ) ĊĠĠĠĠĠĠĠ Ġcancel Btn . text Ġ= Ġfragment . getString ( R . string . note _ cancel ) ĊĠĠĠĠĠĠĠ Ġcontent Text . text Ġ= Ġfragment . getString ( R . string . note _ delete _ content ) ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠDi y Dialog ( context , ĠR . style . Di y Dialog , Ġdi y Dialog View ) ĊĊĠĠĠĠĠĠĠ Ġcancel Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . close Di y Dialog () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġconfirm Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( place List . size Ġ> Ġ 1 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç§»éĻ¤ æĮĩå®ļ ä½įç½® çļĦ åľ° åĮº ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplace List . remove At ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ä¿ĿåŃĺ çİ°åľ¨ çļĦ åľ° åĮº åĪĹè¡¨ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . viewModel . save Place ( place List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Text . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Animation . set Animation ( R . raw . delete _ finish ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Animation . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Animation . loop ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! content Animation . is Anim ating ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Animation . play Animation () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Animation . add Animator Update Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . animated Fraction Ġ== Ġ 1 F ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . close Di y Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// éĢļçŁ¥ recyclerview åĪ·æĸ° åĪĹè¡¨ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . getString ( R . string . note _ delete _ size 1 ). show Toast () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdialog . set Canceled On Touch Outside ( false ) ĊĠĠĠĠĠĠĠ Ġdialog . show Di y Dialog () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Location Dialog ( context : ĠContext , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdi y Dialog View Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( context ). inflate ( R . layout . dialog _ di y _ layout , Ġnull ) ĊĠĠĠĠĠĠĠ Ġval Ġconfirm Btn Ġ= Ġdi y Dialog View . findViewById < TextView >( R . id . confirm _ button ) ĊĠĠĠĠĠĠĠ Ġval Ġcancel Btn Ġ= Ġdi y Dialog View . findViewById < TextView >( R . id . cancel _ button ) ĊĠĠĠĠĠĠĠ Ġval Ġcontent Text Ġ= Ġdi y Dialog View . findViewById < TextView >( R . id . content _ text ) ĊĠĠĠĠĠĠĠ Ġval Ġcontent Animation Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdi y Dialog View . findViewById < Lot tie Animation View >( R . id . content _ animation ) ĊĠĠĠĠĠĠĠ Ġconfirm Btn . text Ġ= Ġfragment . getString ( R . string . note _ confirm ) ĊĠĠĠĠĠĠĠ Ġcancel Btn . text Ġ= Ġfragment . getString ( R . string . note _ cancel ) ĊĠĠĠĠĠĠĠ Ġcontent Text . text Ġ= Ġfragment . getString ( R . string . note _ location _ content ) ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠDi y Dialog ( context , ĠR . style . Di y Dialog , Ġdi y Dialog View ) ĊĊĠĠĠĠĠĠĠ Ġcancel Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . close Di y Dialog () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġconfirm Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( place List . size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// å°Ĩ åİŁ æľī ç½® é¡¶ å½ĵåīį åľ° åĮº ä¸İ çİ° éľĢ ç½® é¡¶ çļĦ åľ° åĮº ä½įç½® å¯¹ æį¢ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCollections . swap ( place List , Ġ 0 , Ġposition ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// åĪ·æĸ° å½ĵåīį åľ° åĮº ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . refresh Now Place Name () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ä¿ĿåŃĺ çİ°åľ¨ çļĦ åľ° åĮº åĪĹè¡¨ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . viewModel . save Place ( place List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// åĪ·æĸ° å½ĵåīį åľ° åĮº çļĦ å¤© æ°Ķ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplace Ġ= Ġplace List [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġfragment . activity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity Ġis ĠWeather Activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . viewModel . location Lng Ġ= Ġplace . location . lng ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . viewModel . location Lat Ġ= Ġplace . location . lat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . viewModel . place Name Ġ= Ġplace . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . refresh Weather () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Animation . add Animator Update Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . animated Fraction Ġ== Ġ 1 F ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . close Di y Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity Ġis ĠWeather Activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . drawer Layout . close Draw ers () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Text . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Animation . set Animation ( R . raw . set _ done _ finish ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Animation . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Animation . loop ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! content Animation . is Anim ating ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Animation . play Animation () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// éĢļçŁ¥ recyclerview åĪ·æĸ° åĪĹè¡¨ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdialog . set Canceled On Touch Outside ( false ) ĊĠĠĠĠĠĠĠ Ġdialog . show Di y Dialog () ĊĠĠĠ Ġ} Ċ }