package Ġcom . air bnb . e po xy . sample . test module Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . TextView Ċ import Ġcom . air bnb . e po xy . E po xy Attribute Ċ import Ġcom . air bnb . e po xy . E po xy Model Ċ import Ġcom . air bnb . e po xy . E po xy Model Class Ċ import Ġcom . air bnb . e po xy . sample . R Ċ import Ġcom . air bnb . e po xy . sample . models . Base E po xy Holder Ċ import Ġkotlinx . coroutines . flow . Mutable State Flow Ċ import Ġkotlinx . coroutines . flow . collect Latest Ċ import Ġkotlinx . coroutines . launch Ċ Ċ @ Suppress Lint (" Non Constant ResourceId ") Ċ @ E po xy Model Class ( layout Ġ= ĠR . layout . sample _ item _ layout ) Ċ abstract Ġclass ĠSample E po xy Model ( val Ġselect Flow : ĠMutable State Flow < List < String >> Ġ? Ġ= Ġnull ) Ġ: ĠBase E po xy Model With Holder < Sample E po xy Model . Holder >() Ġ{ ĊĊĠĠĠ Ġ@ E po xy Attribute ĊĠĠĠ Ġvar Ġtitle : ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġ@ E po xy Attribute ĊĠĠĠ Ġvar Ġprogress : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun Ġbind ( holder : ĠH older ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . bind ( holder ) ĊĠĠĠĠĠĠĠ Ġholder . title . text Ġ= Ġtitle ĊĠĠĠĠĠĠĠ Ġholder . progress . text Ġ= Ġprogress . toString () Ċ Ċ // ĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġselect Flow . collect Latest Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . contains ( title )){ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" yy j ", Ġ" bind : Ġcontains Ġ Ġ$ ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠE po xy Debugger . add ( holder , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpre Bind ( view : ĠH older , Ġpreviously Bound Model : ĠE po xy Model < *> ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . pre Bind ( view , Ġpreviously Bound Model ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġis Un bind Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( force Un bind ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( previous ly Bound Model Ġas ? ĠBase E po xy Model With Holder < Holder >) ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . is Alive ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . unbind ( view ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Un bind Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġun bind ( holder : ĠH older ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . unbind ( holder ) ĊĠĠĠĠĠĠĠ ĠE po xy Debugger . remove ( holder , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠH older Ġ: ĠBase E po xy Holder () Ġ{ ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġtitle : ĠTextView ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġprogress : ĠTextView ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbind View ( item View : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . bind View ( item View ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= ĠitemView . findViewById ( R . id . title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Ġ= ĠitemView . findViewById ( R . id . progress ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }