package Ġcom . cc pp . onet wo three demo . custom Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . EditText Ċ import Ġandroidx . core . widget . do After TextChanged Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . cc pp . onet wo three demo . R Ċ import Ġcom . cc pp . onet wo th re es dk . model . Buyer Ċ import Ġcom . cc pp . onet wo th re es dk . model . Merchant Ċ import Ġcom . cc pp . onet wo th re es dk . model . Transaction Ċ import Ġcom . google . android . material . text field . TextInput Layout Ċ Ċ class ĠCustom Adapter ( private Ġval Ġdata List : List < InputType >) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < Custom Adapter . Custom ViewHolder >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠCustom ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . custom _ item , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠCustom ViewHolder ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġdata List . size ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( view Holder : ĠCustom ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewHolder . bind ( data List [ position ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetValue From Index ( type : ĠInput Type ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdata List . first OrNull Ġ{ Ġit Ġ== Ġtype Ġ} ?. value . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsetValue ( merchant : ĠMer chant , Ġtransaction : ĠTransaction , Ġbuy er : ĠBu yer ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata List . forEach Ġ{ ĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Type . merchant Id Ġ-> ĠĠĠĠĠĠĠĠ Ġ{ Ġit . value Ġ= Ġmerchant . id Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Type . redirect URL Ġ-> ĠĠĠĠĠĠĠ Ġ{ Ġit . value Ġ= Ġmerchant . redirect URL Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Type . notification URL Ġ-> ĠĠĠ Ġ{ Ġit . value Ġ= Ġmerchant . notification URL . toString () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Type . merchant Data Ġ-> ĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . value Ġ= Ġmerchant . merchant Data ?. join ToString Ġ( ": ") Ġ{ Ġdata Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . item . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Type . merchant Reference Ġ-> Ġ Ġ{ Ġit . value Ġ= Ġtransaction . merchant Reference Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Type . preferred Agent Ġ-> ĠĠĠĠ Ġ{ Ġit . value Ġ= Ġtransaction . preferred Agent Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Type . product Desc Ġ-> ĠĠĠĠĠĠĠ Ġ{ Ġit . value Ġ= Ġtransaction . product Desc Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Type . payment Info Ġ-> ĠĠĠĠĠĠĠ Ġ{ Ġit . value Ġ= Ġtransaction . payment Info . toString () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Type . amount Ġ-> ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġit . value Ġ= Ġtransaction . amount Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Type . currency Code Ġ-> ĠĠĠĠĠĠ Ġ{ Ġit . value Ġ= Ġtransaction . currency Code Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Type . payment Expiry Ġ-> ĠĠĠĠĠ Ġ{ Ġit . value Ġ= Ġtransaction . payment Expiry . toString () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Type . user Defined 1 Ġ-> ĠĠĠĠĠĠ Ġ{ Ġit . value Ġ= Ġtransaction . user Defined 1 . toString () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Type . user Defined 2 Ġ-> ĠĠĠĠĠĠ Ġ{ Ġit . value Ġ= Ġtransaction . user Defined 2 . toString () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Type . user Defined 3 Ġ-> ĠĠĠĠĠĠ Ġ{ Ġit . value Ġ= Ġtransaction . user Defined 3 . toString () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Type . user Defined 4 Ġ-> ĠĠĠĠĠĠ Ġ{ Ġit . value Ġ= Ġtransaction . user Defined 4 . toString () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Type . user Defined 5 Ġ-> ĠĠĠĠĠĠ Ġ{ Ġit . value Ġ= Ġtransaction . user Defined 5 . toString () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Type . buyer Email Ġ-> ĠĠĠĠĠĠĠĠ Ġ{ Ġit . value Ġ= Ġbuy er . email Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Type . buyer Mobile Ġ-> ĠĠĠĠĠĠĠ Ġ{ Ġit . value Ġ= Ġbuy er . mobile Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Type . buyer Language Ġ-> ĠĠĠĠĠ Ġ{ Ġit . value Ġ= Ġbuy er . language Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Type . buyer OS Ġ-> ĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġit . value Ġ= Ġbuy er . os Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Type . buyer Notify Ġ-> ĠĠĠĠĠĠĠ Ġ{ Ġit . value Ġ= Ġif Ġ( buyer . notify Buyer ) Ġ" true " Ġelse Ġ" false " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Type . buyer Title Ġ-> ĠĠĠĠĠĠĠĠ Ġ{ Ġit . value Ġ= Ġbuy er . title . toString () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Type . buyer FirstName Ġ-> ĠĠĠĠ Ġ{ Ġit . value Ġ= Ġbuy er . firstName . toString () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInput Type . buyer LastName Ġ-> ĠĠĠĠĠ Ġ{ Ġit . value Ġ= Ġbuy er . lastName . toString () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġnotify DataSet Changed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠCustom ViewHolder ( val Ġview : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtil : ĠText Input Layout Ġ= Ġview . findViewById ( R . id . textInput Layout ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġedit Text : ĠEditText Ġ= Ġview . findViewById ( R . id . edit Text ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( model : ĠInput Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtil . hint Ġ= Ġmodel . title ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . hint Ġ= Ġmodel . hint ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . setText ( model . value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġedit Text . do After TextChanged Ġ{ Ġmodel . value Ġ= Ġit . toString () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ