package Ġcom . one h undred yo . battery freeze . adapter Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . net . Uri Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . core . content . Context Compat . startActivity Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . one h undred yo . battery freeze . DO . News Ċ import Ġcom . one h undred yo . battery freeze . R Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġjava . io . IOException Ċ import Ġjava . net . Malformed URLException Ċ import Ġjava . net . URL Ċ Ċ class ĠCustom ListView Adapter ( private Ġval Ġcontext : ĠContext ) Ġ: Ċ RecyclerView . Adapter < Custom ListView Adapter . ViewHolder > (){ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġitem ClickListener Ġ: ĠOn ItemClickListener ĊĠĠĠ Ġvar Ġnews List Ġ= Ġmutable ListOf < News >() ĊĠĠĠ Ġclass ĠViewHolder ( view : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ){ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlist Title : ĠTextView Ġ= Ġview . findViewById ( R . id . list _ view _ title ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlist Image : ĠImageView Ġ= Ġview . findViewById ( R . id . list _ view _ image ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġbind ( item : ĠNews ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist Title . text Ġ= Ġitem . title ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCor outine Scope ( Dispatch ers . Main ). launch { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbitmap Ġ= Ġwith Context ( Dispatch ers . IO ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage Loader . load Image ( item . imageUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist Image . setImage Bitmap ( bitmap ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġnews List . size ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( context ). inflate ( R . layout . list _ view _ custom , Ġparent , false ) ĊĠĠĠĠĠĠĠ Ġreturn ĠViewHolder ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset ItemClickListener ( on ItemClickListener : ĠOn ItemClickListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . item ClickListener Ġ= Ġon ItemClickListener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( news List [ position ]) ĊĊĠĠĠĠĠĠĠ Ġholder . item View . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem ClickListener . onClick ( it , Ġposition ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn ItemClickListener { ĊĠĠĠĠĠĠĠ Ġfun ĠonClick ( view : ĠView , Ġposition : ĠInt ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ object ĠImage Loader { ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġload Image ( imageUrl : ĠString ): ĠBitmap ? { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbmp : ĠBitmap ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= ĠURL ( imageUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstream Ġ= Ġurl . open Stream () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBitmap Factory . decode Stream ( stream ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} catch Ġ( e : ĠMal formed URLException ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} catch Ġ( e : ĠIOException ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbmp ĊĠĠĠĠĠĠĠ Ġ} Ċ }