package Ġcom . k ido zh . dis cu zh ub . activities Ċ Ċ import Ġcom . k ido zh . dis cu zh ub . utilities . Animation Utils . get Animated Adapter Ċ import Ġcom . k ido zh . dis cu zh ub . utilities . Animation Utils . get Recycler view Animation Ċ Ċ import Ġcom . k ido zh . dis cu zh ub . activities . Base Status Activity Ċ import Ġcom . k ido zh . dis cu zh ub . adapter . Url Suggestion Adapter . OnClick Suggestion Listener Ċ import Ġcom . k ido zh . dis cu zh ub . adapter . Url Suggestion Adapter Ċ import Ġcom . k ido zh . dis cu zh ub . view Models . Add BB S ViewModel Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . net . Uri Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . k ido zh . dis cu zh ub . entities . Suggest URL Info Ċ import Ġcom . k ido zh . dis cu zh ub . R Ċ import Ġes . dm oral . toast y . Toast y Ċ import Ġandroid . widget . Toast Ċ import Ġcom . k ido zh . dis cu zh ub . entities . Dis cu z Ċ import Ġcom . k ido zh . dis cu zh ub . database . Dis cu z Database Ċ import Ġcom . k ido zh . dis cu zh ub . activities . Add Intro Activity Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . text . Editable Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Compound Button Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġcom . k ido zh . dis cu zh ub . databinding . Activity B bs Add Intro Binding Ċ import Ġcom . k ido zh . dis cu zh ub . utilities . V ibrate Utils Ċ import Ġjava . lang . Exception Ċ import Ġjava . net . Malformed URLException Ċ import Ġjava . net . URL Ċ import Ġjava . util . ArrayList Ċ Ċ class ĠAdd Intro Activity Ġ: ĠBase Status Activity (), ĠOnClick Suggestion Listener Ġ{ ĊĠĠĠ Ġvar Ġadapter : ĠUrl Suggestion Adapter Ġ= ĠUrl Suggestion Adapter () ĊĠĠĠ Ġlateinit Ġvar ĠviewModel : ĠAdd BB S ViewModel ĊĠĠĠ Ġvar Ġbinding : ĠActivity B bs Add Intro Binding ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠActivity B bs Add Intro Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding !!. root ) ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Provider ( this ). get ( Add BB S ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġconfigure Recycler view () ĊĠĠĠĠĠĠĠ Ġbind ViewModel () ĊĠĠĠĠĠĠĠ Ġconfigure Url EditText () ĊĠĠĠĠĠĠĠ Ġconfigure Continue Btn () ĊĠĠĠĠĠĠĠ Ġconfigure Add Guide () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfigure Add Guide () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding !!. bbs Add Guide . paint Flags Ġ= Ġbinding !!. bbs Add Guide . paint Flags Ġor ĠPaint . UNDER LINE _ TEXT _ FLAG ĊĠĠĠĠĠĠĠ Ġbinding !!. bbs Add Guide . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠUri . parse (" https :// dis cu zh ub . k ido zh . com / add - a - bbs - guide /") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ VIEW , Ġuri ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfigure Recycler view () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġbinding !!. bbs Add Intro Recycler view . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġbinding !!. bbs Add Intro Recycler view . set Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠ Ġbinding !!. bbs Add Intro Recycler view . adapter Ġ= Ġget Animated Adapter ( this , Ġadapter ) ĊĠĠĠĠĠĠĠ Ġbinding !!. bbs Add Intro Recycler view . item Animator Ġ= Ġget Recycler view Animation ( this ) ĊĠĠĠĠĠĠĠ Ġ// Ġadd Ġexamples ĊĠĠĠĠĠĠĠ Ġval Ġsuggest URL InfoList : ĠMutable List < Suggest URL Info > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġsuggest URL InfoList . add ( Suggest URL Info (" https :// bbs . nw pu . edu . cn ", ĠgetString ( R . string . bbs _ url _ example _ np ub bs ), Ġtrue )) ĊĠĠĠĠĠĠĠ Ġsuggest URL InfoList . add ( Suggest URL Info (" https :// bbs . com sen z - service . com ", ĠgetString ( R . string . bbs _ url _ example _ dis cu z _ support ), Ġtrue )) ĊĠĠĠĠĠĠĠ Ġsuggest URL InfoList . add ( Suggest URL Info (" https :// www . m cb bs . net ", ĠgetString ( R . string . bbs _ url _ example _ m cb bs ), Ġtrue )) ĊĠĠĠĠĠĠĠ Ġsuggest URL InfoList . add ( Suggest URL Info (" https :// key lol . com ", ĠgetString ( R . string . bbs _ url _ example _ key lol ), Ġtrue )) ĊĠĠĠĠĠĠĠ Ġsuggest URL InfoList . add ( Suggest URL Info (" https :// bbs . q zz n . com ", ĠgetString ( R . string . bbs _ url _ example _ q zz n ), Ġtrue )) ĊĠĠĠĠĠĠĠ Ġsuggest URL InfoList . add ( Suggest URL Info (" https :// www . right . com . cn / forum ", ĠgetString ( R . string . bbs _ url _ example _ right _ com ), Ġtrue )) ĊĠĠĠĠĠĠĠ Ġadapter . set Suggest URL InfoList ( suggest URL InfoList ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . current URL LiveData . observe ( this , Ġ{ Ġs Ġ-> Ġ// Ġneed Ġto Ġanalyze Ġthe ĠURL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsuggest URL Infos Ġ= Ġget Suggest ed URL List ( s ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . set Suggest URL InfoList ( suggest URL Infos ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . isLoading LiveData . observe ( this , Ġ{ Ġa Boolean Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( a Boolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding !!. bbs Add Intro ProgressBar . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding !!. bbs Add Intro ProgressBar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . error Text LiveData . observe ( this , Ġ{ Ġs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s . length Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast y . warning ( application , Ġs , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . verified BB S . observe ( this , ĠObserver Ġ{ Ġb bs Information : ĠDis cu z ? Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bbs Information Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDis cu z Database ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getInstance ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forum Information Dao . insert ( bbs Information ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast y . success ( this , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . add _ a _ bbs _ successfully , Ġb bs Information . site _ name ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish After Transition () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . errorMessage Mutable LiveData . observe ( this , Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( it Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast y . error ( this , getString ( R . string . dis cu z _ api _ message _ template , it . key , it . content ), Toast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Suggest ed URL List ( url String : ĠString ): ĠList < Suggest URL Info > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsuggest URL InfoList : ĠMutable List < Suggest URL Info > Ġ= ĠArrayList () ĊĠĠĠĠĠĠĠ Ġif Ġ( url String Ġ== Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuggest URL InfoList . add ( Suggest URL Info (" https :// bbs . nw pu . edu . cn ", ĠgetString ( R . string . bbs _ url _ example _ np ub bs ), Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuggest URL InfoList . add ( Suggest URL Info (" https :// bbs . com sen z - service . com ", ĠgetString ( R . string . bbs _ url _ example _ dis cu z _ support ), Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuggest URL InfoList . add ( Suggest URL Info (" https :// www . m cb bs . net ", ĠgetString ( R . string . bbs _ url _ example _ m cb bs ), Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuggest URL InfoList . add ( Suggest URL Info (" https :// key lol . com ", ĠgetString ( R . string . bbs _ url _ example _ key lol ), Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuggest URL InfoList . add ( Suggest URL Info (" https :// bbs . q zz n . com ", ĠgetString ( R . string . bbs _ url _ example _ q zz n ), Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuggest URL InfoList . add ( Suggest URL Info (" https :// www . right . com . cn / forum ", ĠgetString ( R . string . bbs _ url _ example _ right _ com ), Ġtrue )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġadd Ġurl ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠURL ( url String ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsplit String Ġ= Ġurl String . split ("/ "). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( split String . size Ġ>= Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpath Prefix Ġ= Ġsplit String [ 0 ] Ġ+ Ġ"/" Ġ+ Ġsplit String [ 1 ] Ġ+ Ġ"/" Ġ+ Ġsplit String [ 2 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Path Ġprefix Ġ$ path Prefix ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuggest URL InfoList . add ( Suggest URL Info ( path Prefix , ĠgetString ( R . string . bbs _ url _ suggestion _ host ), Ġfalse )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 3 Ġuntil Ġsplit String . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Prefix Ġ+= Ġ"/" Ġ+ Ġsplit String [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuggest URL InfoList . add ( Suggest URL Info ( path Prefix , ĠgetString ( R . string . bbs _ url _ suggestion _ level , Ġi Ġ- Ġ 2 ), Ġfalse )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuggest URL InfoList . add ( Suggest URL Info (" https :// bbs . nw pu . edu . cn ", ĠgetString ( R . string . bbs _ url _ example _ np ub bs ), Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuggest URL InfoList . add ( Suggest URL Info (" https :// bbs . com sen z - service . com ", ĠgetString ( R . string . bbs _ url _ example _ dis cu z _ support ), Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuggest URL InfoList . add ( Suggest URL Info (" https :// www . m cb bs . net ", ĠgetString ( R . string . bbs _ url _ example _ m cb bs ), Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuggest URL InfoList . add ( Suggest URL Info (" https :// key lol . com ", ĠgetString ( R . string . bbs _ url _ example _ key lol ), Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuggest URL InfoList . add ( Suggest URL Info (" https :// www . 1 point 3 ac res . com / bbs ", ĠgetString ( R . string . bbs _ url _ example _ 1 point 3 ac res ), Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuggest URL InfoList . add ( Suggest URL Info (" https :// www . right . com . cn / forum ", ĠgetString ( R . string . bbs _ url _ example _ right _ com ), Ġtrue )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuggest URL InfoList ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfigure Url EditText () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding !!. bbs Add Intro Url Edit text . add TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence , Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġneed Ġto Ġpost Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . current URL LiveData . value Ġ= Ġs . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġbinding !!. auto Add B bs . setOn Checked ChangeListener Ġ{ Ġ_, Ġis Checked : ĠBoolean Ġ-> ĠviewModel . auto Verify URL LiveData . post Value ( isChecked ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfigure Continue Btn () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding !!. bbs Add Intro Continue Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl String Ġ= Ġbinding !!. bbs Add Intro Url Edit text . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . verify URL () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠMal formed URLException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast y . warning ( application , ĠgetString ( R . string . add _ bbs _ url _ failed , Ġurl String ), ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick Suggestion ( suggest URL Info : ĠSuggest URL Info ) Ġ{ ĊĠĠĠĠĠĠĠ ĠV ibrate Utils . vi br ate For Click ( this ) ĊĠĠĠĠĠĠĠ Ġ// Ġlazy Ġload ĊĠĠĠĠĠĠĠ Ġif Ġ( binding !!. bbs Add Intro Url Edit text . text . toString () Ġ!= Ġsuggest URL Info . url ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding !!. bbs Add Intro Url Edit text . setText ( suggest URL Info . url ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġhas Submit Auto Verify Ġ= Ġfalse ĊĠĠĠ Ġoverride Ġfun Ġon URL Verified ( base _ url : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġauto Check Ġ= ĠviewModel . auto Verify URL LiveData . value !! ĊĠĠĠĠĠĠĠ Ġif Ġ(! has Submit Auto Verify Ġ&& Ġauto Check ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Submit Auto Verify Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġonly Ġimplement Ġwhen Ġauto Ġcheck Ġis Ġon ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnot Ġtriggering Ġurl ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . current URL LiveData . post Value ( base _ url ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . verify URL () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠAdd Intro Activity :: class . java . simple Name ĊĠĠĠ Ġ} Ċ }