package Ġcom . xf hy . news . activity Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . widget . helper . Item Touch Helper Ċ import Ġandroid . text . TextUtils Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġcom . xf hy . library . base kit . activity . Title Bar Activity Ċ import Ġcom . xf hy . library . utils . SP Utils Ċ import Ġcom . xf hy . library . widgets . Custom Dialog Ċ import Ġcom . xf hy . library . widgets . Default Item Touch Help Callback Ċ import Ġcom . xf hy . news . R Ċ import Ġcom . xf hy . news . adapter . News Sort Adapter Ċ import Ġcom . xf hy . news . config . News Config Ċ import Ġcom . xf hy . news . data . bean . News Sort Bean Ċ import Ġkotlinx . android . synt hetic . main . news _ activity _ sort _ news .* Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġxf hy Ġon Ġ 2 0 1 8 / 3 / 1 9 Ġ 1 4 : 2 7 Ċ Ġ* ĠDescription Ġ: Ġ çĶ¨äºİ ç®¡çĲĨ æĸ° éĹ» æİĴåºı çļĦ Ċ Ġ*/ Ċ class ĠSort News Activity Ġ: ĠTitle Bar Activity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġm Sort Adapter : ĠNews Sort Adapter Ġ Ġby Ġlazy Ġ{ ĠNews Sort Adapter ( null ) Ġ} ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ èĢģ æķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Old News Sort List : ĠMutable List < News Sort Bean >? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġget This Title (): ĠCharSequence Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" é¦ĸé¡µ ç±» åĪ« æİĴåºı " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . news _ activity _ sort _ news ) ĊĊĠĠĠĠĠĠĠ Ġinit View () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġm News Sort Rv . adapter Ġ= Ġm Sort Adapter ĊĠĠĠĠĠĠĠ Ġm News Sort Rv . set Has Fixed Size ( true ) ĊĊĠĠĠĠĠĠĠ Ġ// èİ·åıĸ SP ä¸Ń æķ°æį® å¹¶ æĺ¾ç¤º åĪ° RecyclerView ä¸Ĭ ĊĠĠĠĠĠĠĠ Ġval Ġnews Sort Config Ġ= ĠSP Utils . getValue ( News Config . NE WS _ SORT _ CONFIG , Ġ"") ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( news Sort Config )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// å¦Ĥæŀľ SP ä¸Ń æķ°æį® ä¸ºç©º , åĪĻ è¯´æĺİ çĶ¨æĪ· æľª éħįç½® æİĴåºı é¡ºåºı ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Sort Adapter . replace Data ( News Config . NE WS _ TYPE ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Old News Sort List Ġ= ĠGson (). fromJson ( news Sort Config , Ġobject Ġ: ĠType Token < List < News Sort Bean >>() Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. type ) Ġas ? ĠMutable List < News Sort Bean > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// å¤įåĪ¶ ä¸Ģ ä»½ , ä¸ĵ éĹ¨ çĶ¨äºİ æĺ¾ç¤º , éģ¿åħį æĺ¾ç¤º çļĦæķ°æį® ä¸İ èĢģ æķ°æį® å¼ķçĶ¨ æĺ¯ ä¸Ģæł· çļĦ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdest Ġ= ĠMutable List ( m Old News Sort List ?. size Ġ?: Ġ 0 , Ġ{ Ġ_ Ġ-> ĠNews Sort Bean () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Old News Sort List ?. forEach Indexed Ġ{ Ġindex , Ġnews Sort Bean Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdest [ index ]. news Type Ġ= Ġnews Sort Bean . news Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdest [ index ]. isChecked Ġ= Ġnews Sort Bean . isChecked ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Sort Adapter . replace Data ( dest ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// åĪ©çĶ¨ Item Touch Helper ç»ĳå®ļ RecyclerView ãĢģ Item Touch Helper . Callback æĿ¥ å®ŀçİ° UI æĽ´æĸ° ï¼Į ĊĠĠĠĠĠĠĠ Ġ// Ġ å¹¶ä¸Ķ å®ŀçİ° åĬ¨æĢģ æİ§åĪ¶ æĺ¯åĲ¦ å¼ĢåĲ¯ æĭ ĸ æĭ ½ åĬŁèĥ½ åĴĮ æ»ĳ åĬ¨ åĪłéĻ¤ åĬŁèĥ½ ãĢĤ ĊĠĠĠĠĠĠĠ Ġval Ġm Callback Ġ= ĠDefault Item Touch Help Callback ( object Ġ: ĠDefault Item Touch Help Callback ĊĠĠĠĠĠĠĠ Ġ. On Item Touch Callback Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sw ip ed ( adapter Position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Move ( src Position : ĠInt , Ġtarget Position : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Sort Adapter . data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCollections . swap ( m Sort Adapter . data , Ġsrc Position , Ġtarget Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Sort Adapter . notify Item Moved ( src Position , Ġtarget Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġm Callback . is Can Drag Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġval Ġitem Touch Helper Ġ= ĠItem Touch Helper ( m Callback ) ĊĠĠĠĠĠĠĠ Ġitem Touch Helper . attach To RecyclerView ( m News Sort Rv ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// åħĪ åĪ¤æĸŃ æķ°æį® æĺ¯åĲ¦ åıĳçĶŁ åıĺåĮĸ ĊĠĠĠĠĠĠĠ Ġval Ġdata Changed Ġ= Ġjudge Data Change () ĊĊĠĠĠĠĠĠĠ Ġ// æķ°æį® åıĳçĶŁ åıĺåĮĸ ĊĠĠĠĠĠĠĠ Ġif Ġ( data Changed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow S ure Dialog () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å±ķç¤º ç¡®è®¤ å¯¹ è¯Ŀ æ¡Ĩ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġshow S ure Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// å±ķç¤º æıĲç¤º æ¡Ĩ Ġ è®© çĶ¨æĪ· ä¿ĿåŃĺ ĊĠĠĠĠĠĠĠ Ġval Ġcustom Dialog Ġ= ĠCustom Dialog ( mContext , Ġnull , Ġ" ç¡®å®ļ ä¿ĿåŃĺ ?", Ġ" ä¸į ä¿ĿåŃĺ ", Ġ" ç¡®å®ļ ", Ġobject Ġ: ĠCustom Dialog ĊĠĠĠĠĠĠĠ Ġ. On Custom Dialog Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Left Click () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Right Click () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Sort DataTo Sp () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġcustom Dialog . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪ¤æĸŃ æķ°æį® æĺ¯åĲ¦ åıĳçĶŁ åıĺåĮĸ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġjudge Data Change (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġdata Changed Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġm Old News Sort List ?. forEach Indexed Ġold Data Loop @ Ġ{ Ġindex , Ġnews Sort Bean Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Sort Adapter . data ?. get ( index )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// è¿ĻéĩĮ çļĦ != å·²ç»ı è¿Ľè¡Į äºĨ åĲĦ ä¸ª å±ŀæĢ§ çļĦ æ¯Ķè¾ĥ Ġ Ġ èĢĮä¸įæĺ¯ ç®Ģåįķ è¿Ľè¡Į å¯¹è±¡çļĦ åłĨ åľ°åĿĢ è¿Ľè¡Į æ¯Ķè¾ĥ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ!= Ġnews Sort Bean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Changed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ old Data Loop ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ç¬¬ ä¸Ģæ¬¡ è¿Ľåħ¥ , éĤ£ä¹Ī èĢģ æķ°æį® ä¸ºç©º ĠĠ Ġåıª éľĢè¦ģ åĪ¤æĸŃ æĸ° æķ°æį® æĺ¯åĲ¦ æľī Ġæ ² ¡ æľī è¢« éĢī ä¸ŃçļĦ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Old News Sort List Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Sort Adapter . data ?. forEach Ġadapter Data @ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// è¿ĻéĩĮ çļĦ != å·²ç»ı è¿Ľè¡Į äºĨ åĲĦ ä¸ª å±ŀæĢ§ çļĦ æ¯Ķè¾ĥ Ġ Ġ èĢĮä¸įæĺ¯ ç®Ģåįķ è¿Ľè¡Į å¯¹è±¡çļĦ åłĨ åľ°åĿĢ è¿Ľè¡Į æ¯Ķè¾ĥ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! it . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Changed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ adapter Data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġdata Changed ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// åħĪ åĪ¤æĸŃ æķ°æį® æĺ¯åĲ¦ åıĳçĶŁ åıĺåĮĸ ĊĠĠĠĠĠĠĠ Ġval Ġdata Changed Ġ= Ġjudge Data Change () ĊĊĠĠĠĠĠĠĠ Ġ// æķ°æį® åıĳçĶŁ åıĺåĮĸ ĊĠĠĠĠĠĠĠ Ġif Ġ( data Changed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow S ure Dialog () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ ä¿ĿåŃĺ æķ°æį® åĪ° SharedPreferences ä¸Ń ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsave Sort DataTo Sp () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnews Sort Json Ġ= ĠGson (). toJson ( m Sort Adapter . data , Ġobject Ġ: ĠType Token < List < News Sort Bean >>() Ġ{} . type ) ĊĠĠĠĠĠĠĠ ĠSP Utils . put Value ( News Config . NE WS _ SORT _ CONFIG , Ġnews Sort Json ) ĊĠĠĠ Ġ} Ċ Ċ }