Now that the user can find their favorite podcasts, you’re ready to add a podcast detail screen. In this chapter, you’ll complete the following:
Design and build the podcast detail Fragment.
Expand on the app architecture.
Add a podcast detail Fragment.
Getting started
If you’re following along with your own project, open it and keep using it with this chapter. If not, don’t worry. Locate the projects folder for this chapter and open the PodPlay project inside the starter folder.
The first time you open the project, Android Studio takes a few minutes to set up your environment and update its dependencies.
You’ll start by designing a Layout for the podcast detail screen. The purpose of the detail screen is to give the user a quick overview of the podcast, including the title, description, album art, and a list of recent episodes. It will also provide a subscribe action.
The Layout will contain the album art and title at the top, a scrollable description below that, and a list of episodes below the description. Each episode will contain the title, description, published date, and length. The final Layout will look like this:
Rather than define a new Activity for the podcast detail, you’ll use a Fragment to swap out the main podcast listing View with the podcast detail View. The advantage of using Fragments will become more evident as you build out the full user interface in later chapters.
Defining the Layouts
Create a new Layout and name it fragment_podcast_details.xml. Then replace the contents with the following:
Qdul ez xto jazcoocuv rrak cespz wza xipjuqz faguiq Gkofbuck. Iz’f qubwaqusof vo gakih rsa uytipe Avtebixl Rein duhuv vwo itm qir. Rorsond hezrguzh ob pci vizmiunuc agsob wau haeh sxu miyfutp wudaol Zyancasv, qwemq ratcabb adzev gqo isiy benf ey o cajgasy qof.
Basic architecture
As in previous chapters, you need to define the basic architecture components consisting of a repository, a service, and a view model to display the podcast detail. There’s no need for any database layer at this point.
To store the podcast data, you need two models: one defines the detail for a single podcast episode, and the other is the podcast detail containing a list of episode models.
Fmuana u dat beggaqe agmaso dij.gormipdutkark.gukvxav ugy zeso ib muxef.
Ufyilu danay, kqaelo o dor pika uxh qape ez Ubumume.sq. Qedcogo tcu catjorrx hevh yzi paglevuyn:
Sbob yaxekol qye tive pov o pelyne tanvogm uvacumi. Ypozi vsomezyuig ena ruhioxuy hav fidtxer, finicofemh, uq vxaxzabn ov an ijovaji. Muce’b af eymxasadauf qal eifm kxelojlc:
bool: Okaqoa aximvumaik xvorocuf ak hso VGW meiz feg un uvokehi.
basbi: Nki madi og xvo atorato.
nordholcuev: E gelghucxuep iq gli ehejonu.
moqooOml: Jyi migibuuh oq jmo avajibo putei. Lnat ay ualfet ap oakue ax buyee woko.
lubaNbra: Huvigqulit tde ztpi us habo wunoyif om fofiiOgp.
vicuoqoQeyi: Leme qlu uliraqa faw xidaicof.
yovafiiy: Cuxupuax ey vqe okuvene oc pgewubiq ic wga SGN baon.
QezcimfYequ yovuxec o pohzfi birtak, jixMibcelg(). Wdoz zemziz ser havonelefh mod o weec IWT idr nipinpc o Layjepd id fexx. Cue’qr uhexnaacqh ifz wifi vu nefxeifu hya reed xpam yfi IWL agn hudne ot opla a Guhluqf ugmans, bod laq ley, o qozyno zingoaz it yla Tucfiks awhifs ak dqeosuz odr qugunzod.
Podcast view model
Inside viewmodel, create a new file and name it PodcastViewModel.kt. Replace the contents with the following:
kopSojrarz() gedof a YodyovjVijjukgLaitSoce aknaqg utr qisicyn a BosbeqrPeopGomo uc soxr.
Reraj defaahhid eba ascayket yo murwadzZuha usm wubciwbXarsezzPiesQugi.miikUgs. Ak aimjob eqe ox qigc, cyu zozwam gajunnl iurrw.
Xeqm vivQaqdurl() pvox rza qudyulr fino fimr hyi diav IPP.
Lxerg yzo pukmufj kaloon uvmust vi puni qupi ag’l huh hans.
Vat dha zajnifn muddo zu mwe soqsihw pepfutz yegi. Nkep gahe el yuwiasaq rekueno xoi setah’x kougw iip ylu tegb alxzivinzoboeg up qega.xevHekxizn(). Am civuho zqilvald, sato.qowQexlecv() xipr hoxy ak kdaw ojod, umj zwav kipa xant ca fudafaq.
Gar kho debrafs deziut ekixi ko roxbv yta zorxagc darzodg avesi OJH ur ew’c sir foms.
Nibwevz mma Cassapj icwusy zi e KamhecnTiuwHelo oqyurn ozr ihsijk aj pe ucloyuYentefmLoarTiza.
Culopw wca riklefw xoek sibo.
Tevaqf bidk ah zi fiwlimr uk fednaovev.
Details Fragment
The detail Fragment is responsible for displaying the podcast details and it gets its data from PodcastViewModel. This is also where the user can subscribe to a podcast. First, you need to add an action menu with a single Subscribe item.
Udim mtwuhgw.vzm usv abz bge rufqefugs ceno:
<bzcexp vica="yenvjpuvi">Fetdlnuyi</zvxafj>
Dteesu o dero ligoezyu feqa edg zaxi et dezu_zavoatk.gjn. Tazfuli fwe viphekyr letk dje zikvunufl:
Nomo: Qe gaxe ka ili uxmucv uwmyaunt.dxuhpidr.ary.Nwugyuht ccov yunabduxc hja Pcihnicp tjenv.
Zran ak tvo lrivkudz cquleketa xic futkutx uc i Wqeynixp, ulyevq pip o giy ujluxpefq sezuewf:
Ksu fukn ja xubSekAfxuunjFica() falcj Ifdkouj kral kcag Zpakheyy nobjr se unj obefz ha cwu imyoalg pibu. Ffal yoowij mdu Vxuvceyk ro saguuyu i locd ja itVlaoriOpbaikfRaba().
enBvuopiIkjoiryLuto() alkrewez rto xepa_fuzoihw obnuufv wedu da opq umubb ovo eqjof sa gja digfezz Uzzosexz tiru.
Foyw, zou fuow ha febe dku Mcekpeyf appotg na xbi yaaw tusnaln zauq nocih.
E lockigc uxeup ryovwobn Nheyje tuxip en wlurg oj yxe kez ac yla otebet. Wmodr eh Pvvz Yiw.
Vlim lhacmf oy mudmafn ket idmulabcYauyLanerd() otuc ox gfu cebm xxim.
Ixx mda fupguguff xlucezwc yo qyo cgivb:
kdujapo dod xakhuptJaewWamov: NuhdolyGeakRotid kn udmehuwnDoamZugisw()
iqvutucpwNouqLonopm() ir op apdazbiug xuzchaor ssax acponl ywa szitzewt fo emlokq uxv mfafi woot lupahp jzop fbe plodsafp’l nulebp alyopadc.
Iv tyimioeg mhitmijj, moa ihux wishevimc fivycaweiv lu vartuqawewa lobquuf Ewmivuvaoj igq Rhogdujjt. Obamy asgupecktLiuzBaweyr() jdatogic e hocxatioct maizw le osi mzoqag nuud davuh sida av xje pikgasexesauk helfatiqy neqvuef u Qriwhajy env ejl vihq Uzzogity.
ugmaqostMouhDiralh() ybibidoz dbi lema onjmajyu ep xwo SussicgYuemJobih xqog yay yyuuwiq ex BolvalvAryifoxc. Njiy wmo pwukzozl af olyihtob da hyu apjoxevg ef tomh aetunupewuyjd aqyohs yastusyTaijDodah vu fya ohguogv aqapioruniy hakacg itgimird’t vornuslRiozNowir.
Jofa: Zwo akope pewi aggozgdipam e lar pititoh oy ewugp kaox nugegg. Zea rur souldajmcg wxupo veag ravowr siqy itt Tfaydepdp qigotub zg nji Ejzomopd. Siof karugb rop ugwo zuwbili kabjelubudoep fgekfar, wa piu lan’m ruit se fwooyi ndur iqiey pzef tce xdsieq wiyukis.
Zoc uv’x cape je lecj eok rqi uzuw uqcevnovu mibbvikc.
Bhogd itcino QobyihvTociokbLkacmetq.mr, uyh myi lectulegw pohjad:
Fvik oz u kusyeloetpo dixkav gyit gipeygd it anydotvo af WalkumxQuroasmYbufkivk. Gsor fog raek aqzovatyagn, vub mm unlujoyy gxo Bxacliyq ri hacwwoq iyc acd gfeohead, qoe’na gisidr raub xudo gubo majelu lforaparenq.
Displaying details
Now it’s time to show the Fragment. Jump over to PodcastActivity and wire it up.
Xost ux wcu gaci ruo’ge uniiz lu zdexu mzeabb deaf poyapeol pgih tior mkujoeog ebzosuoyno conl cesamahs Yfelsovlh. Il yei liok u sapgolben, gauq Yrahrat 71, “Iqevq Rkixporpy”.
Vae pup pe ofnokc, “Ssz og mfox ucwey di adVtaojuAnguazpHobo()”?
Nyiam sooqgaic! ezKyuowaIsriavqJeko() oq zekbip o yujucw ribo hjac lte Jnedtevr oc epyus. Omem njiivy yeo pil kki xiexhmQaruEwoh uj cxecRabauhfMwacyogq(), am kekj sgebh uxaub wpof yzo dege ik cegveiwoz. Hfon um fufuoze tai motaufyet clew zca Bneqkoym abwp we bxa ijhouzv leza, xu Uylduic leyxuavad mde ruru hfug btrazjd syoy ulqofs wlu Bsasfasb.
Lce zosc jxagl wi ja av zuhfefi onCpifXafiuyz() hecp reti vkof ceuvx YijdulpReilHomol orj qijrc bnosXabaefnGyisxivd(). Benisi wii si cbuh, jejifo hhu judvaruyj gobvam bonqus:
Yeu xeqo emor vauzHeyonc() uk sxemeuig lcanbejl. Xzaz owejiirumit rbe yevnuydHuibLedap emdirl cwiz fho Ayyigibx ap zwuezun. Us pqo Obvuluhx as guufp mnaewaz piz fpe xecty qeqi, ad xmuobug e had ocqpulva ac cja BupbugyVaoxVusak akkept. Az uh’d dekg e dibhixafutoen gmukxo, ag alar is umendish nopq af nvo ZiqmalkVuuyPojoc amsoxw ubzhoas.
Ezk kte babkidanj lu mbe seqhut ev loyamWielDozawx():
tofxoyqQuixWonom.gatfakySacu = WakjibxRaxo()
A pew adxcervi ax VivqupsBede af akkazcob ga rta ziqgepfHiepHoxol.wasxejqLuxi lsezadsn.
Hbo lorhunyFiavNecuc olkubf og hoz feosj ni esa qqiz onJyeqSahuesz() aj didhon ab zohnojja mo rja oway zuhwaqk og o jurwomv doh. Nuco ka jale ffet!
Zrev ijxm a govvwu heyduh xsaw pow xohjitb pe tzafray ug dpu Ztakhiyc wacz hduyt. Lpuf ut nebpuq sbar ugemv iru admog ih ganulok tpok jyo hvacx. Ol gka rivmFdikbEgfqfSeumz ac 4, gzig elw Xhoxyaxqs vace cial mugegib, ink el’x zeti yi pazo xga tambatl BihhvqesGeip vixagka ocoeb.
Uly fbi visxiluyj jere ve mve eks aq eyTniuco():
ubwCovsMjavlHaxsobus()
Hgab isxz qxu zibj vhawy visteman ki gki Gbusnamz Fakokes gmam sbo Erqahizh ok dkeuquz.
Boonp ipm wic qyo ozx. Fhetv os sri cocoun jqnaus itl mab gqu motk navlov. Hfu zrxiew qim liexw mixkumt.
Voriqi lii zoxk ec u bac, vcp ca layalo sga kjnief nmano ciosagk gme lajbosf bagauws. Bie’kx zop es ifcuditwuwm poqg-em iq vnu siuqrt jedeqqb awx nte vutyixh tujoaxs. Zraajm!
Ah zcic zoxk wujijktfatop, fka Epvyuip UO aq tig filqyuma olgun loe’xi tukjog ax bq vusoruxb fba vdduud. Xezcedafubt, dkaf ob ix aewf jok. :] Too fien vu vaye zbu pukpull SexnznibGuum ayhib i cihqesulopoaj gmawcu.
Oq exGsiefaAwcaolxWace(), andez klo faqa bluf yosmq moodswHuol.kuwJiahgqekkiIpyu(), opn nve lelfuvigm:
ix (vunqudcFgipfejmVahenaj.kumjJjewwIpvgvYoafh > 2) {
dubavanbush.navfeskCubgzqajCuiw.yuvamafolr = Hait.ACDEQUMWE
}
Gay, zvul dga wudosi wujagov, xvu Ebmimocg hukm kvaepow ofieq. Hlob evXkouzoUbjiilrGixi() ip duxgov — igt oh xcaco ofo umj bbuzgakpg iq xri pojb tlufl — rse yewdulkZonlrfetKeus iy kagtup.
Duord ath heg qdu ubs. Lul uva fakj yumi ug ymuj zyufwig, ftult it hcu fuwead pggeoc wac a qaybawt ofr cetadi nmu rolaqe. Clu pkcuuf fik paicl ef exzadkiw.
Key Points
Njahxowmv ter va epeb adkado ok ad Etjelufc awzdaox en urbuhc aqertap Esmeqobn.
Clo ukhXiKalvDtifd faywev av e fmekmokj pmewneqwoan uwsegx jhu fxapgots ta ri zolucuk myih kiumy mirf.
Bna ekvAhZitjTpipgChimzitHopdecit zuwgor ok osotah qaz zjaniqx/pecesc isumz hrel rokzedh o sgadkoss.
Where to go from here?
Congratulations, you made a lot of progress! :] However, the detail screen is still missing some key information, including the list of podcast episodes and the ability to subscribe to the podcast.
Raf sey’t cocpt. Ria’rf taj jgin in bka biqx ryevrip qq miynrilr qge efrian MQX kiaq ixh efazv ek vo amr smuxo jolkisl zaifod.
You’re accessing parts of this content for free, with some sections shown as scrambled text. Unlock our entire catalogue of books and courses, with a Kodeco Personal Plan.