package Ġcom . n war . d sm . de an om oo _ d sm . Adapter Ċ Ċ import Ġandroid . app . Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View . GONE Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . n war . d sm . de an om oo _ d sm . Data Module . Comment Ċ import Ġcom . n war . d sm . de an om oo _ d sm . Data Module . Post er Ċ import Ġcom . n war . d sm . de an om oo _ d sm . Image . Pic asso Trans Formation Ċ import Ġcom . n war . d sm . de an om oo _ d sm . R Ċ import Ġcom . squareup . pic asso . Pic asso Ċ import Ġandroid . view . View . VISIBLE Ċ import Ġandroid . widget .* Ċ Ċ // 4 6 , Ġ 8 7 ~ 1 0 2 , Ġ 1 2 5 ~ 1 3 7 ë Į ĵ ê¸ Ģ ê¸° ëĬ¥ . Ġì¶Ķ í ĽĦ Ġì¶Ķê°Ģ Ċ Ċ class ĠPost er Adapter Ġ( val Ġcontext : ĠContext , Ġval Ġitems Ġ: ĠArrayList < Post er >): RecyclerView . Adapter < RecyclerView . ViewHolder > (){ ĊĊĠĠĠ Ġfinal Ġval ĠDEFAULT _ ITEM Ġ= Ġ 0 ĊĠĠĠ Ġfinal Ġval ĠLAST _ ITEM Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġview Ġ: ĠRecyclerView . ViewHolder ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( p 0 : ĠViewGroup , Ġp 1 : ĠInt ): ĠRecyclerView . ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . e (" poster ", Ġ" onCreate ViewHolder , ĠView Type : Ġ$ p 1 ") ĊĠĠĠĠĠĠĠ Ġif ( p 1 == LAST _ ITEM ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Ġ= ĠBottom ViewHolder ( LayoutInflater . from ( context ). inflate ( R . layout . bottom of _ recyclerview , p 0 , false )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Ġ= ĠViewHolder ( LayoutInflater . from ( context ). inflate ( R . layout . recyclerview _ item , p 0 , false )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( p 0 : ĠRecyclerView . ViewHolder , Ġp 1 : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . e (" poster ", Ġ" on Bind ViewHolder , Ġposition Ġ: Ġ$ p 1 ") ĊĠĠĠĠĠĠĠ Ġif ( p 0 Ġis ĠViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġholder : ĠViewHolder Ġ= Ġp 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Image ( holder , Ġp 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . set RecyclerView ( items [ p 1 ]. comment List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . bind ( items [ p 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . setOn Click () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġif ( p 0 Ġis ĠBottom ViewHolder ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Image ( holder : ĠViewHolder , Ġposition Ġ: ĠInt ){ ĊĠĠĠĠĠĠĠ Ġif Ġ( items [ position ]. picture Ġ!= Ġnull Ġ&& Ġitems [ position ]. picture Ġ! ="") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpic asso Trans Formation Ġ= ĠPic asso Trans Formation () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPic asso . with ( context ). load ( items [ position ]. picture ). transform ( pic asso Trans Formation . resize Trans Formation ). into ( holder . picture ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" image URL ", Ġitems [ position ]. picture ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" image URL ", Ġ" null ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( position Ġ== Ġitems . size - 1 ) return ĠLAST _ ITEM ĊĠĠĠĠĠĠĠ Ġelse Ġreturn ĠDEFAULT _ ITEM ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠBottom ViewHolder ( view Ġ: ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ) ĊĊĠĠĠ Ġinner Ġclass ĠViewHolder ( view Ġ: ĠView ) Ġ: ĠRecyclerView . ViewHolder ( view ){ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġtitle Ġ= Ġview . findViewById < TextView >( R . id . title _ poster _ tv ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcontent Ġ= Ġview . findViewById < TextView >( R . id . content _ poster _ tv ) ĊĠĠĠĠĠĠĠ Ġval Ġpicture Ġ= Ġview . findViewById < ImageView >( R . id . image _ poster _ iv ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġreport Btn Ġ= Ġview . findViewById < ImageView >( R . id . report _ poster _ iv ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcount Comment Ġ= Ġview . findViewById < TextView >( R . id . list _ count comment _ tv ) ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġis Show Comment Ġ: ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġre cyclerView Ġ= Ġview . findViewById < RecyclerView >( R . id . list _ comment _ list ) ĊĠĠĠĠĠĠĠ Ġprivate Ġlateinit Ġvar Ġposter Info Ġ: ĠPost er ĊĠĠĠĠĠĠĠ Ġfun Ġbind ( poster Info Ġ: ĠPost er ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle ?. text Ġ= Ġposter Info . title . toString () Ġ+ Ġ" ë²Ī ì§¸ ĠëĮĢ ë§Ī " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent ?. text Ġ= Ġposter Info . content ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . poster Info Ġ= Ġposter Info ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Show Comment Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( poster Info . comment List == null ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Comment . text Ġ= Ġ" ë Į ĵ ê¸ ĢìĿ´ ĠìĹĨ ìĬµëĭĪëĭ¤ ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif ( poster Info . comment List . size == 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Comment . text Ġ= Ġ" ë Į ĵ ê¸ ĢìĿ´ ĠìĹĨ ìĬµëĭĪëĭ¤ ." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Show Comment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Comment . text Ġ= Ġposter Info . comment List . size . toString () Ġ+ Ġ" ê°ľ ìĿĺ Ġë Į ĵ ê¸ Ģ Ġâĸ ¼ " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . visibility Ġ= ĠVIS IBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Comment . text Ġ= Ġposter Info . comment List . size . toString () Ġ+ Ġ" ê°ľ ìĿĺ Ġë Į ĵ ê¸ Ģ Ġâĸ ¶ " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . visibility Ġ= ĠG ONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" poster ", Ġ" bind () ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġset OnClick (){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠDialog ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreport Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . set ContentView ( R . layout . popup _ report ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreport Cancel Ġ= Ġdialog . findViewById < Button >( R . id . cancel ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreport Ġ= Ġdialog . findViewById < Button >( R . id . report ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomment Ġ= Ġdialog . findViewById < EditText >( R . id . report _ comment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġreport Comment Ġ: ĠString Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreport Cancel . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreport . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreport Comment Ġ= Ġcomment . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , poster Info . title . toString () Ġ+ Ġreport Comment Ġ+ Ġ" ìĭł ê³ł ëĲĺ ìĹĪ ìĬµëĭĪëĭ¤ .", Toast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . window . setBackground Drawable ( Color Drawable ( Color . TRANSP ARENT )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcount Comment . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Show Comment Ġ= Ġ! is Show Comment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( is Show Comment ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Comment . text Ġ= Ġposter Info . comment List ?. size . toString () Ġ+ Ġ" ê°ľ ìĿĺ Ġë Į ĵ ê¸ Ģ Ġâĸ ¼ " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . visibility Ġ= ĠVIS IBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Comment . text Ġ= Ġposter Info . comment List ?. size . toString () Ġ+ Ġ" ê°ľ ìĿĺ Ġë Į ĵ ê¸ Ģ Ġâĸ ¶ " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . visibility Ġ= ĠG ONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfun Ġset RecyclerView ( comment List Ġ: ĠArrayList < Comment > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" set RecyclerView ", Ġ" ì§Ħ ìŀħ .. ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠComment Adapter ( context , Ġcomment List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlm Ġ= ĠCustom Linear LayoutManager ( context ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . layout Manager Ġ= Ġlm ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . is Nested Scrolling Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cyclerView . set Has Fixed Size ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Set RecyclerView "," ë ģ Ŀ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġadd Item ( data Info Ġ: ĠPost er ){ ĊĠĠĠĠĠĠĠ Ġitems . add ( item Count , data Info ) ĊĠĠĠĠĠĠĠ Ġnotify Item Inserted ( item Count ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġitems . size ĊĠĠĠ Ġ} Ċ }