package Ġcz . spark o . course . android . f lick rb rowser Ċ Ċ import Ġandroid . os . AsyncTask Ċ import Ġandroid . util . Log Ċ import Ġorg . json . JSONObject Ċ Ċ private Ġconst Ġval ĠTAG Ġ= Ġ" Get F lickr Json Data " Ċ Ċ class ĠGet F lickr Json Data ( private Ġval Ġlistener : ĠOn Data Available ) Ġ: ĊĠ ĠAsync Task < String , ĠVoid , ĠArrayList < Photo >>() Ġ{ ĊĊĠ Ġoverride Ġfun Ġdo In Background ( var arg Ġparams : ĠString ): ĠArrayList < Photo > Ġ{ ĊĠĠĠ ĠLog . d ( TAG , Ġ" do In Background : Ġ") ĊĊĠĠĠ Ġval Ġphotos Ġ= ĠArrayList < Photo >() ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġval Ġitems Ġ= ĠJSONObject ( params [ 0 ]). get JSONArray (" items ") ĊĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġitems . length ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġphotos . add ( parse Photo ( items . getJSONObject ( i ))) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠ ĠLog . e ( TAG , Ġ" do In Background : ĠFailed Ġparsing Ġphotos ", Ġe ) ĊĠĠĠĠĠ Ġcancel ( true ) ĊĠĠĠĠĠ Ġlistener . onError ( e ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġphotos ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġparse Photo ( jsonObject : ĠJSONObject ): ĠPhoto Ġ{ ĊĠĠĠ Ġval Ġphoto Url Ġ= ĠjsonObject . getJSONObject (" media "). getString (" m ") ĊĠĠĠĠĠ Ġ. replace First ("_ m . jpg ", Ġ"_ b . jpg ") ĊĠĠĠ Ġreturn ĠPhoto ( ĊĠĠĠĠĠ ĠjsonObject . getString (" title "), ĊĠĠĠĠĠ ĠjsonObject . getString (" author "), ĊĠĠĠĠĠ ĠjsonObject . getString (" author _ id "), ĊĠĠĠĠĠ ĠjsonObject . getString (" link "), ĊĠĠĠĠĠ ĠjsonObject . getString (" tags "), ĊĠĠĠĠĠ Ġphoto Url ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Post Execute ( result : ĠArrayList < Photo >) Ġ{ ĊĠĠĠ ĠLog . d ( TAG , Ġ" on Post Execute : Ġ") ĊĠĠĠ Ġlistener . on Data Available ( result ) ĊĠ Ġ} ĊĊĠ Ġinterface ĠOn Data Available Ġ{ ĊĠĠĠ Ġfun Ġon Data Available ( data : ĠList < Photo >) ĊĠĠĠ Ġfun ĠonError ( e : ĠException ) ĊĠ Ġ} Ċ }