package Ġcom . tom as zn aj da . simp ler ec y cl er view . sample Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġcom . tom as zn aj da . simp ler ec y cl er view . adapter . Advanced Srv Adapter Ċ import Ġcom . tom as zn aj da . simp ler ec y cl er view . sample . entity . Ad vertisement Ċ import Ġcom . tom as zn aj da . simp ler ec y cl er view . sample . entity . User Ċ import Ġcom . tom as zn aj da . simp ler ec y cl er view . sample . view holder . Ad vertisement ViewHolder Ċ import Ġcom . tom as zn aj da . simp ler ec y cl er view . sample . view holder . User ViewHolder Ċ import Ġkotlinx . android . synt hetic . main . activity _ advanced _ example .* Ċ import Ġjava . util .* Ċ Ċ class ĠAdvanced Example Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġadapter Ġ= ĠAdvanced Srv Adapter (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġadd ViewHolder ( User :: class , ĠR . layout . view holder _ user ) Ġ{ ĠUser ViewHolder ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġadd ViewHolder ( Ad vertisement :: class , ĠR . layout . view holder _ ad ) Ġ{ ĠAd vertisement ViewHolder ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ advanced _ example ) ĊĊĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġadapter ĊĊĠĠĠĠĠĠĠ Ġbtn Set List . setOnClickListener Ġ{ Ġinitialize () Ġ} ĊĠĠĠĠĠĠĠ Ġbtn Insert Single . setOnClickListener Ġ{ Ġinsert Single () Ġ} ĊĠĠĠĠĠĠĠ Ġbtn Insert List . setOnClickListener Ġ{ Ġinsert List () Ġ} ĊĠĠĠĠĠĠĠ Ġbtn Remove . setOnClickListener Ġ{ Ġremove () Ġ} ĊĠĠĠĠĠĠĠ Ġbtn Move . setOnClickListener Ġ{ Ġmove () Ġ} ĊĠĠĠĠĠĠĠ Ġbtn Replace . setOnClickListener Ġ{ Ġreplace () Ġ} ĊĊĠĠĠĠĠĠĠ Ġinitialize () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Random Item () Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( Random (). nextInt ( 2 ) Ġ== Ġ 0 ) Ġgenerate Random User () ĊĠĠĠĠĠĠĠ Ġelse Ġgenerate Random Ad () ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Random User () Ġ= ĠUser (" First User Ġ${ Random (). nextInt () }") ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Random Ad () Ġ= ĠAd vertisement (" http :// ad vertisement . com /${ Random (). nextInt () }") ĊĊĠĠĠ Ġprivate Ġfun Ġinitialize () Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . set (( 0 .. 2 ). map Ġ{ Ġgenerate Random Item () Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinsert Single () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= ĠRandom (). nextInt ( adapter . item Count ) ĊĠĠĠĠĠĠĠ Ġadapter . insert ( generate Random Item (), Ġposition ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinsert List () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġposition Start Ġ= ĠRandom (). nextInt ( adapter . item Count ) ĊĠĠĠĠĠĠĠ Ġadapter . insert (( 0 .. 2 ). map Ġ{ Ġgenerate Random Item () Ġ}, Ġposition Start ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġremove () Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( adapter . item Count Ġ== Ġ 0 ) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= ĠRandom (). nextInt ( adapter . item Count ) ĊĠĠĠĠĠĠĠ Ġadapter . remove ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmove () Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( adapter . item Count Ġ< Ġ 2 ) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġfrom Position Ġ= ĠRandom (). nextInt ( adapter . item Count ) ĊĠĠĠĠĠĠĠ Ġval Ġto Position Ġ= ĠRandom (). nextInt ( adapter . item Count ) ĊĠĠĠĠĠĠĠ Ġadapter . move ( from Position , Ġto Position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreplace () Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( adapter . item Count Ġ== Ġ 0 ) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= ĠRandom (). nextInt ( adapter . item Count ) ĊĠĠĠĠĠĠĠ Ġadapter . replace ( generate Random Item (), Ġposition ) ĊĠĠĠ Ġ} Ċ }