package Ġcom . p anda . p da . app . operation . f ms . material . bind Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . Sp ann able StringBuilder Ċ import Ġandroid . view . KeyEvent Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . input method . Editor Info Ċ import Ġandroid . widget . EditText Ċ import Ġandroidx . core . text . color Ċ import Ġandroidx . fragment . app . activity ViewModels Ċ import Ġby . kir ich 1 4 0 9 . view binding delegate . view Binding Ċ import Ġcom . p anda . p da . app . R Ċ import Ġcom . p anda . p da . app . base . Base Fragment Ċ import Ġcom . p anda . p da . app . common . adapter . Common View Binding Adapter Ċ import Ġcom . p anda . p da . app . base . extension . deep Copy Ċ import Ġcom . p anda . p da . app . base . ret rofit . Web Client Ċ import Ġcom . p anda . p da . app . databinding . Fragment Material Binding Product Binding Ċ import Ġcom . p anda . p da . app . databinding . Item Bind Material Code Binding Ċ import Ġcom . p anda . p da . app . operation . f ms . data . Material Api Ċ import Ġcom . p anda . p da . app . operation . f ms . data . model . Material Bind Request Ċ import Ġcom . p anda . p da . app . operation . f ms . data . model . Material Model Ċ import Ġcom . p anda . p da . app . operation . f ms . data . model . Product Model Ċ import Ġcom . p anda . p da . app . operation . f ms . data . model . Task B anded Material Model Ċ import Ġcom . p anda . p da . app . operation . f ms . material . Material ViewModel Ċ import Ġcom . p anda . p da . app . operation . f ms . data . model . Task Model Ċ import Ġtim ber . log . Tim ber Ċ Ċ /** Ċ Ġ* Ġcreated Ġby ĠAn Ji wei Ġ 2 0 2 1 / 8 / 3 1 Ċ Ġ*/ Ċ class ĠMaterial Binding Product Fragment Ġ: ĠBase Fragment ( R . layout . fragment _ material _ binding _ product ) Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtask Model : ĠTask Model ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġproduct Model : ĠProduct Model ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding Binding Adapter : ĠCommon View Binding Adapter < Item Bind Material Code Binding , ĠMaterial Model > ĊĠĠĠ Ġprivate Ġval Ġview Binding Ġby Ġview Binding < Fragment Material Binding Product Binding >() ĊĊĠĠĠ Ġprivate Ġval Ġmaterial ViewModel Ġby Ġactivity ViewModels < Material ViewModel >() ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġview Binding . top AppBar . set Navigation OnClickListener Ġ{ Ġnav Back Listener ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġmaterial ViewModel . sc anned Product Data . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding . tv Product Serial Code . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( R . string . product _ bar _ code _ formatter , Ġit . also Ġ{ Ġproduct Model Ġ= Ġit Ġ}. code ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġmaterial ViewModel . selected Task Data . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask Model Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġview Binding . et Search Bar . setOn Editor ActionListener Ġ{ Ġedit Text , Ġaction Id , Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Id Ġ== ĠEditor Info . IME _ ACTION _ DONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Scan Material Code ( edit Text . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( event . keyCode Ġ== ĠKeyEvent . KEYCODE _ ENTER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Scan Material Code ( edit Text . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( edit Text Ġas ĠEditText ). selectAll () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġview Binding . rv Bind List . adapter Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠCommon View Binding Adapter < Item Bind Material Code Binding , ĠMaterial Model >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmutable ListOf ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Binding ( parent : ĠViewGroup ): ĠItem Bind Material Code Binding Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠItem Bind Material Code Binding . inflate ( LayoutInflater . from ( parent . context ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder WithData ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder : ĠView Binding Holder , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata : ĠMaterial Model , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item View Binding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Material Code . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data . material Serial Code . isNull OrEmpty ()) ĠSp ann able StringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. color ( require Context (). getColor ( R . color . text Header Line Color )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend ("- ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġdata . material Serial Code ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Material Desc . text Ġ= Ġdata . combine Info Str () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e (" b anded Ġitem : Ġ${ data . material Name }, Ġ${ data . material Serial Code }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. also Ġ{ Ġbinding Binding Adapter Ġ= Ġit Ġ} ĊĊĠĠĠĠĠĠĠ Ġmaterial ViewModel . task B anded Material Data . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Bind Material ( it ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Scan Material Code ( code : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠWeb Client . request ( Material Api :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. task Material Bind Post ( Material Bind Request ( task Model . id , Ġproduct Model . code , Ġcode )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind To Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġrequest Bind Data ( task Model . id , Ġproduct Model . code ) Ġ}, Ġ{}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrequest Bind Data ( taskId : ĠInt , Ġproduct Code : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠWeb Client . request ( Material Api :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. material Task Query Bind By Product Get ( product Code , ĠtaskId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. bind To Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġdata Ġ-> Ġupdate Bind Material ( data ) Ġ}, Ġ{}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Bind Material ( data : ĠTask B anded Material Model ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview Binding . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Bind Count . text Ġ= ĠSp ann able StringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append (" å·² ç»ĳå®ļ Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. color ( require Context (). getColor ( R . color . text High Light Color )) Ġ{ Ġappend ( data . total Bind Count . toString ()) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append ("/ ${ data . total To Bind Count } ä¸ª ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding Binding Adapter . refresh Data ( format B anded Data ( data )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġformat B anded Data ( data : ĠTask B anded Material Model ): ĠList < Material Model > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmutable ListOf < Material Model >() ĊĠĠĠĠĠĠĠ Ġdata . to Bind List . forEach Ġ{ Ġmodel Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġb anded Count Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . bind List . map Ġ{ Ġb anded Model Ġ-> Ġif Ġ( b anded Model . material Code Ġ== Ġmodel . material Code ) Ġ 1 Ġelse Ġ 0 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sum () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġto Bind Count Ġ= Ġmodel . material Num Ġ- Ġb anded Count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( to Bind Count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . addAll ( List ( model . material Num ) Ġ{ Ġmodel . deep Copy () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġresult . addAll ( data . bind List ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ }