package Ġcom . ke les ht eri . quiz android app Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Type face Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View . OnClickListener Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġcom . ke les ht eri . quiz android app . databinding . Activity Main Binding Ċ import Ġcom . ke les ht eri . quiz android app . databinding . Activity Quiz Questions Binding Ċ import Ġorg . w 3 c . dom . Text Ċ Ċ class ĠQu iz Questions Activity Ġ: ĠAppCompatActivity (), ĠOn ClickListener Ġ{ ĊĊĠĠĠ Ġ// binding ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Quiz Questions Binding ĊĊĠĠĠ Ġprivate Ġvar ĠmCurrent Position : Int Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġvar Ġm Questions List : ĠArrayList < Question >? Ġ= null ĊĠĠĠ Ġprivate Ġvar Ġm Selected Option Position : Int Ġ= 0 ĊĠĠĠ Ġprivate Ġvar Ġm Correct Answers : ĠInt = 0 ĊĠĠĠ Ġprivate Ġvar Ġm UserName : ĠString ? Ġ= null ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠActivity Quiz Questions Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ Ġ// set ContentView ( R . layout . activity _ quiz _ questions ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĊĠĠĠĠĠĠĠ Ġwindow . decor View . system Ui Visibility = ĠView . SYSTEM _ UI _ FLAG _ FULL SCREEN ĊĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġm UserName Ġ= Ġintent . getString Extra ( Constants . USER _ NAME ) ĊĊĠĠĠĠĠĠĠ Ġ// get Ġall ĠQuestions ĊĠĠĠĠĠĠĠ Ġm Questions List Ġ= ĠConstants . get Questions () ĊĊĠĠĠĠĠĠĠ Ġset Question () ĊĊĠĠĠĠĠĠĠ Ġ// onclick ĊĠĠĠĠĠĠĠ Ġbinding . tv Option One . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbinding . tv Option Two . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbinding . tv Option Three . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbinding . tv Option Four . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġbinding . btn Submit . setOnClickListener ( this ) ĊĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġset ĠQuestion ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset Question (){ ĊĠĠĠĠĠĠĠ Ġ/** Ġ Ġ**/ Ċ // ĠĠĠĠĠĠĠ ĠmCurrent Position = 1 ĊĠĠĠĠĠĠĠ Ġval Ġquestion Ġ= Ġm Questions List ! ![ m Current Position - 1 ] ĊĊĠĠĠĠĠĠĠ Ġ// set Ġdefault Ġstyle Ġfor Ġoptions ĊĠĠĠĠĠĠĠ Ġdefault Options View () ĊĊĠĠĠĠĠĠĠ Ġ// set Ġbtn Submit Ġtext ĊĠĠĠĠĠĠĠ Ġif ( m Current Position == Ġm Questions List !!. size ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Submit . text =" FIN ISH " ĊĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Submit . text =" SUBMIT " ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĊĠĠĠĠĠĠĠ Ġbinding . progress Bar . progress = ĠmCurrent Position ĊĠĠĠĠĠĠĠ Ġbinding . tv Progress . text Ġ= Ġ"$ m Current Position " Ġ+ Ġ"/ "+ binding . progress Bar . max ĊĊĠĠĠĠĠĠĠ Ġbinding . tv Question . text Ġ= Ġquestion !!. question ĊĠĠĠĠĠĠĠ Ġbinding . iv Image . setImage Resource ( question . image ) ĊĊĠĠĠĠĠĠĠ Ġbinding . tv Option One . text = question . option One ĊĠĠĠĠĠĠĠ Ġbinding . tv Option Two . text = question . option Two ĊĠĠĠĠĠĠĠ Ġbinding . tv Option Three . text = question . option Three ĊĠĠĠĠĠĠĠ Ġbinding . tv Option Four . text Ġ= question . option Four ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġset Ġdefault Ġstyle Ġfor Ġoptions ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdefault Options View (){ ĊĠĠĠĠĠĠĠ Ġ// Ġcreate Ġarray Ġlist ĠTextView ĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠArrayList < TextView >() ĊĊĠĠĠĠĠĠĠ Ġ// added Ġfrom Ġactivity _ quiz _ questions Ġlayout ĊĠĠĠĠĠĠĠ Ġoptions . add ( 0 , binding . tv Option One ) ĊĠĠĠĠĠĠĠ Ġoptions . add ( 1 , binding . tv Option Two ) ĊĠĠĠĠĠĠĠ Ġoptions . add ( 2 , binding . tv Option Three ) ĊĠĠĠĠĠĠĠ Ġoptions . add ( 3 , binding . tv Option Four ) ĊĊĠĠĠĠĠĠĠ Ġ// for ĠLoop ĊĠĠĠĠĠĠĠ Ġfor Ġ( option Ġin Ġoptions ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// set Ġall Ġstyle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoption . setTextColor ( Color . parse Color ("# 7 A 8 0 8 9 ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoption . type face Ġ= Type face . DEFAULT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoption . background = Context Compat . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . default _ option _ border _ bg ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSelected ĠOptions ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġselected Option View ( tv : TextView , selected Option Num : Int ){ ĊĠĠĠĠĠĠĠ Ġ// rest Ġall Ġstyle Ġall Ġoptions ĊĠĠĠĠĠĠĠ Ġdefault Options View () ĊĊĠĠĠĠĠĠĠ Ġm Selected Option Position = Ġselected Option Num ĊĊĠĠĠĠĠĠĠ Ġ// set Ġstyle Ġfor Ġselected Ġoption ĊĠĠĠĠĠĠĠ Ġtv . setTextColor ( Color . parse Color ("# 3 6 3 A 4 3 ")) ĊĠĠĠĠĠĠĠ Ġtv . setType face ( tv . type face , Type face . BOLD ) ĊĠĠĠĠĠĠĠ Ġtv . background = Context Compat . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . drawable . selected _ option _ border _ bg ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġcheck Ġanswer Ġand Ġset Ġdraw ableView ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġanswer View ( answer : Int , Ġdraw ableView : Int ){ ĊĊĠĠĠĠĠĠĠ Ġwhen ( answer ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// if Ġanswer Ġoptions Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 ->{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Option One . background = ĠContext Compat . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , drawable View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// if Ġanswer Ġoptions Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 ->{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Option Two . background = ĠContext Compat . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , drawable View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// if Ġanswer Ġoptions Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 ->{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Option Three . background = ĠContext Compat . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , drawable View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// if Ġanswer Ġoptions Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠ 4 ->{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Option Four . background = ĠContext Compat . get Drawable ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , drawable View ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHandle Ġall ĠOnClick Ġin Ġview ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen ( v ?. id ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// if Ġclick Ġoption Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . tv _ option _ one Ġ-> { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Option View ( binding . tv Option One , 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// if Ġclick Ġoption Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . tv _ option _ two Ġ-> { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Option View ( binding . tv Option Two , 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// if Ġclick Ġoption Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . tv _ option _ three Ġ-> { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Option View ( binding . tv Option Three , 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// if Ġclick Ġoption Ġ 4 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . tv _ option _ four Ġ-> { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Option View ( binding . tv Option Four , 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// if Ġclick Ġon Ġsubmit ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn _ submit Ġ-> { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// check Ġif Ġselected Ġoption ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( m Selected Option Position Ġ== 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmCurrent Position ++ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// check ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmCurrent Position Ġ<= Ġm Questions List !!. size ->{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Question () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġ-> { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , Result Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Constants . USER _ NAME , m UserName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Constants . CORRECT _ AN SW ERS , m Correct Answers ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Constants . TOTAL _ QUEST IONS , m Questions List !!. size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// check ĠElse Ġselected Ġoption Ġ!= 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquestion = m Questions List ?. get ( m Current Position - 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// check Ġcorrect Answer Ġwith ĠSelected Option ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( question !!. correct Answer Ġ!= Ġm Selected Option Position ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanswer View ( m Selected Option Position , R . drawable . wrong _ option _ border _ bg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// correct ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Correct Answers ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// set Ġstyle Ġcorrect Answer ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanswer View ( question . correct Answer , R . drawable . correct _ option _ border _ bg ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// check Ġif Ġis Ġlast ĠQuestion ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Current Position == m Questions List !!. size ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Submit . text =" FIN ISH " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . btn Submit . text =" GO ĠTO ĠNEXT ĠQ UEST ION " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// set ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Selected Option Position = 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }