What you will learn in this course and how is it structured 
 
Thanks a lot for taking the course 
 
How to get most out of this course 
 
Day 1 - Downloading Android Studio 
 
Day 1 Installing Android Studio 
 
Install Android Studio on Linux 
 
Day 1 - Setting up our First Project 
 
Day 1 - Overview of the Android Studio Interface 
 
Day 1 - Understanding Gradle 
 
Day 1 - Changing the Scaling in Android Studio 
 
Day 1 - Setting up our Emulator 
 
Day 1 - Changing our code for the first time 
 
Day 1 - Understanding Preview 
 
Day 1 -  Imports and Packages 
 
Day 1 - Understanding the MainActivity OnCreate and Composable 
 
Let's test your initial understanding and see if you are ready for the next day! 
 
New Feature: Learning Paths 
 
Day 2 - Overview of what Rock Paper Scissors is build of 
 
Day 2 - Overview of what variables are 
 
Day 2 -  Running Hello World 
 
Day 2 - Val vs Var and print ints on the console 
 
Coding Exercise - Understanding Variable Types and Printing in Kotlin 
 
Day 2 - Int Long Short Byte and specifying the type manually 
 
Coding Exercise - Demonstrate the use of floating point data types in Kotlin 
 
Day 2 - Unsigned Integers 
 
Day 2 - Booleans true false negation 
 
Coding Exercise - Understanding Booleans in Kotlin 
 
Day 2 - Char Unicode and Backslash escape character 
 
Day 2 - If Else Statements 
 
Day 2 - Readln and toInt to convert strings into int variables 
 
Day 2 - Else if and the in keyword 
 
Coding Exercise - Exploring "if-else if-else" in Kotlin 
 
Day 2 - Rock Paper Scissors Part 1 - Getting The Computers choice 
 
Day 2 - Rock Paper Scissors Part 2 - Finding out the winner 
 
Day 2 - Rock Paper Scissors Part 3 - Presenting the Winner 
 
Day 2 - While loops with counters 
 
Day 2 - While loops with user input 
 
Coding Exercise -String to Integer Conversion and Basic Input Handling in Kotlin 
 
Coding Exercise - Validate Player Input in Rock-Paper-Scissors Game 
 
Day 3 - Amy and her Coffee Function 
 
Day 3 - Adding Sugar - Functions with Parameters 
 
Day 3 - Quiz Challenge Solution - 1 Spoon 2 Spoons 
 
Coding Exercise - Enhancing the Coffee Machine in Kotlin 
 
Day 3 - Quiz Challenge Solution - Who is the coffee for 
 
Day 3 - BONUS Quiz Challenge Solution - Who is the coffee for with user input 
 
Day 3 - Functions that return something 
 
Coding Exercise - User Input Arithmetic in Kotlin 
 
Day 3 - Quiz Challenge Solution - Get User Input to Add two numbers 
 
Day 3 - More about Return types 
 
Day 3 - Limitations of Output - Return Types 
 
Day 3 - Classes Story Time 
 
Day 3 - Creating our First Class and Object 
 
Day 3 - Understanding Constructors and Default Values 
 
Coding Exercise -Implementing a Kotlin Class with Constructors and Default Value 
 
Day 3 - Accessing and Changing Properties 
 
Day 3 - Data Classes and Coffee 
 
Day 4 - Multiline Comments 
 
Day 4 - Listof and MutableListOf 
 
Day 4 - Modifying specific items in a List 
 
Day 4 - Set Method on Lists 
 
Day 4 - Contains Method - Check if item is in the list 
 
Coding Exercise - List Manipulation Practice in Kotlin 
 
Day 4 - For Loops with Lists 
 
Day 4 - Getting the Index in a for loop 
 
Coding Exercise - Looping Through Lists in Kotlin 
 
Day 4 - BankAccountApp - Private Keyword and Defining List Type 
 
Day 4 - BankAccountApp - Implementing the functionality 
 
Coding Exercise - Enhancing the BankAccount Class in Kotlin 
 
Day 5 -  XML and Jetpack Compose 
 
Day 5 - Creating a Project and Understanding the Code with our New Knowledge 
 
Day 5 - Creating our own Composables and Understanding Column 
 
Day 5 - OutlinedTextField and Anonymous Functions 
 
Coding Exercise - Implementing and Previewing Composables in Jetpack Compose 
 
Day 5 - Button onClick and Toast 
 
Day 5 - Box Icons and DropDownMenus 
 
Day 5 - Modifier VerticalArrangement and HorizontalAlignment 
 
Day 5 - Spacer vs Padding 
 
Coding Exercise - Exploring Spacing: Padding vs Spacer in Jetpack Compose 
 
Day 5 - Adding DropdownMenus and DropDownMenuItems 
 
Day 6 - State - Recomposition - Remember and MutableState 
 
Day 6 - Captains Remember States and Treasures 
 
Coding Exercise: Enhancing the Captain Game with Additional Features 
 
Day 6 - Challenge Solution - Storm or Treasure 
 
Day 6 - Understanding the by keyword 
 
Day 6 - Implementing State to our OutlinedTextField 
 
Day 6 - Implementing iExpanded for DropdownMenu and collapse it 
 
Day 6 - Converting and Finishing the DropDownMenu Input 
 
Day  6 - Taking Care of the right output and Bug fixing 
 
Day 6 -  Changing the Font of our Text 
 
DOWNLOAD SOURCE - UNIT CONVERTER 
 
Day 7 - The Shopping List App 
 
Day 7 - Starting with the Shopping List UI by adding a button 
 
Day 7 - Lucy's Infinite Bookshelf and Jamies LazyColumn 
 
Day 7 - Adding the LazyColumn and the Data Class 
 
Day 7 - Moving our ShoppingListApp Code into a separate file 
 
Day 7 - Understanding and setting up the AlertDialog 
 
Day 7 - Modifying our AlertDialog and Understanding that there 
 
Day 7 - Finishing our AlertDialog and saving the Shoppinglist item 
 
Day 7 - Setting up how a listitem should look like 
 
Day 7 - A little more on Lambda expressions 
 
Day 7 - Finishing our ShoppingListItem Composable using IconButtons 
 
Day 7 - ShoppingItemEditor 
 
Day 7 - Finalizing the App 
 
Understanding the Shopping List App Composable Structure 
 
DOWNLOAD SOURCE - SHOPPING LIST APP 
 
Day 8 - Kingdom of Appdom and The Royal Orchestra MVVM 
 
Coding Exercise - Implement a Counter App using ViewModel in Kotlin 
 
Day 8 - Counter App - Rotating Phone and Losing State 
 
Day 8 - Converting Counter App with MVVM 
 
Day 8 - Functions that didn't exist and could be called 
 
Day 8 - Inheritance 2 - Override and Super Keywords 
 
Day 8 - Interfaces - learning from multiple sources 
 
Day 8 - Setting up the Model and the Repository for MVVM 
 
Day 8 - Why MVVM and Why Repository 
 
Day 8 - Why MVVM and Why Repository 
 
Day 9 - The Scroll of DataVille - JSON Analogy 
 
Day 9 - JSON - what it really stands for 
 
Day 9 - Understanding the Structure of JSON 
 
Understanding JSON and Data Classes in Kotlin 
 
Day 9 - TheMealDB and how we will use it 
 
Day 9 - Adding Dependencies for ViewModel Network Calls JSON 
 
Day 9 - Setting up our Categories Data Classes 
 
Day 9-Using Retrofit the Suspend Key and Coroutines to get Access to Categories 
 
Day 9 - Try And Catch And Finally 
 
Day 9 - Setting up Our MainViewModel and Fetching Data 
 
Day 9 - Preparing our RecipeScreen 
 
Day 9 - How each Category Item should look like 
 
Day 9 - Adding Internet Permission and Running the App 
 
Day 9 - Going through the whole flow of our application 
 
DOWNLOAD SOURCE - MY RECIPE APP 
 
Day 10 - Setting up First Screen for Navigation 
 
Day 10 - Setting up The Second Screen for Navigation 
 
Day 10 - NavHost NavController and Navigating 
 
Coding Exercise - Add a 3rd Screen to navigate to and do so 
 
Day 10 - Passing Variables from One Screen To Another 
 
Coding Exercise - Pass Age as well 
 
Day 10 - Setting up the CategoryDetailScreen for our Recipe App 
 
Day 10 - Preparing our UI for Navigation 
 
Day 10 - Setting up the Routes with a Sealed Class 
 
Day 10 - Implementing the Navigation and Passing Objects 
 
Day 10 - Serialization and Deserialization with Parcelable 
 
Day 10 - Finishing Day 10 
 
Day 11 - Adding Permissions for Coarse and Fine Location in the AndroidManifest 
 
Day 11 - Checking if we have access to the location permissions 
 
Day 11 - Story about Context 
 
Day 11 - RememberLauncherForActivityResult - Starting the Permission request 
 
User Interface & Location Permissions 
 
Day 11 - Requesting for Permission and Seeing the Popup 
 
Day 11 -  Seeing Permissions under the hood in the Android Settings 
 
Day 11 - Preparing the ViewModel for Location Loading 
 
Day 11 - Reading the Latitude and Longitude and displaying it 
 
Day 11 - Setting up a Route and Understanding Location on our Emulator 
 
Day 11 - Displaying the Address based on Latitude and Longitude 
 
Unraveling Geo-decoding: From Coordinates to Addresses 
 
Day 11 - Finishing Day 11 
 
Day 12 - Adding the required Dependencies to our Shopping List App 
 
Day 12 - Setting up the API Key for Google Maps 
 
Day 12 - Adding Geocoding API and testing our API Key 
 
Day 12 - Restricting your API Key 
 
Day 12 - Mapping the API Response to Data Classes 
 
Day 12 - Prepping our LocationSelectionScreen 
 
Day 12 - Adding GoogleMaps to LocationSelectionScreen 
 
Day 12 - Adding the LocationViewModel 
 
Day 12 - Reusing our LocationUtils from the previous lectures 
 
Day 12 - Changing our ShoppingItems 
 
Day 12 - Adding the permission request 
 
Day 12 - Adding the GeocodingApiService 
 
Day 12 - Finalizing Retrofit elements 
 
Day 12 - Putting everything together and testing the app 
 
Navigating Android Composables and Location Services 
 
Day 12 - Finishing Day 12 
 
DOWNLOAD SOURCE - SHOPPING LIST APP FINAL 
 
Day 13 - Setting up the Dependencies 
 
Day 13 - HomeView and Scaffold 
 
Day 13 - Understanding HEX and Colors in Depth 
 
Day 13 - Adding A NavigationIcon to our AppBar 
 
Day 13 - Only Show the BackIcon when not on the MainScreen 
 
Day 13 - FloatingActionButton (FAB) 
 
Day 13 - Adding our Wish and WishItem 
 
Day 13 - Displaying Dummy Data 
 
Day 13 - Preparing the Navigation 
 
Day 13 - Starting with the AddEditDetailView 
 
Day 13 - Designing our own OutlinedTextField 
 
Day 13 - ViewModel and AddDetailView 
 
Day 13 - Finalizing Navigation to Move to the Add Screen 
 
Day 13 - Adding the NavigateUp Functionality to our BackIcon 
 
Android 14 Navigation: Implementing Back Button Functionality 
 
Day 13 - Finishing Day 13 
 
DOWNLOAD SOURCE - WISH LIST APP 
 
Day 14 - Quick Overview Of Storage Options - Reading the book 
 
Day 14 - Setting up the @Entity for our Data Class Wish 
 
Day 14 - Setting Up the DAO and Understanding Queries 
 
Day 14 - The Room WishDatabase Class 
 
Day 14 - Understanding and Using a Repository 
 
Day 14 - Prepping our ViewModel understanding Dispatchers and lateinit Var 
 
Day 14 - Initializing our Database 
 
Day 14 - Dependency Injection 
 
Day 14 - Understanding Singleton and our Graph Object 
 
Day 14 - Adding the Application Class and Using our Graph 
 
Day 14 - Using the Graphs Repository as a Default in Our WishViewModel 
 
Day 14 - Adding a Wish And using Snackbars 
 
Day 14 - Reading all entry from the db and displaying them 
 
Day 14 - Click on a Wish and see it on the detail View 
 
Day 14 - Update An Existing Item 
 
Day 14 - Swipe to Delete Background 
 
DOWNLOAD SOURCE - WISH LIST APP FINAL 
 
Day 16 - Setting up the BottomBar 
 
Day 16 - Adding the Navigation Routes 
 
Day 16 - Setting up the Home Screen - StickyText 
 
Coding Exercise - Create a Browse Screen Using Lazy Vertical Grid in Compose 
 
Day 16 - Challenge Solution - Browse Screen 
 
Day 16 - Setting up the Library Screen 
 
Day 16 - Fixing the Bottom Bar Selected Color 
 
Day 16 - ModalBottomSheetLayout Setup 
 
Day 16 - Adding Actions to our Scaffold 
 
Day 16 - Taking care of updating the Title 
 
Day 16 - Finishing Day 16 
 
Intro Age in Minutes Calculator - Android 12 
 
Setting up the UI for the age calculator 
 
Adding more TextViews and Understanding SP DP and Pixels 
 
Finalizing the UI of our Age Calculator App 
 
Adding a DatePickerDialog and OnDateSetListener 
 
Using the selected Date to display it and looking into simpledateformat and date 
 
Finalizing The Age In Minutes App 
 
Summary Age In Minutes App 
 
What you will build in this chapter 
 
Building The Calculator UI using Linear Layouts part 1 
 
Building The Calculator UI using Linear Layouts part 2 
 
Using OnClick and Implementing the CLR Functionality 
 
Adding the onDecimalPoint Function 
 
Adding the OnOperator Functionality using Contains and StartsWith on Strings 
 
Adding Subtraction - Using split and substring methods on Strings 
 
Adding the Missing Operations and Finalizing the App 
 
Summary Of The Calculator Chapter 
 
Preparing The Projects Style and Manifest 
 
Setting up the ui and using cardview and disable the statusbar 
 
Creating the question Model And Preparing the questions 
 
Setting Up The QUestion UI ANd Connecting the UI to the model part 1 
 
Setting up The questions UI and Connecting the UI to the Model Part 2 
 
Adding The button Functionality to the questions activity 
 
Selecting the Right and Wrong Answer and Displaying the next question 
 
TODO - Register For Activity RESULT DEMO 
 
Preparing the UI for the Result activity 
 
Final Touches And Sending Data Via Intent - putExtra 
 
Introduction - Kids Drawing App 
 
What You Will Build In This Chapter 
 
Setting Up The Kids Drawing App - Drawing View Part 1 
 
Setting Up The Kids Drawing App - Drawing View Part 2 
 
Let The Lines Persist On The View 
 
Adding A Little Border Around The Canvas 
 
Preparing the BrushSizeSelector and How To Use DisplayMetrics 
 
Selecting the Brush Size From A Custom Dialog That we Created 
 
Adding the color pallet using custom drawables that we created 
 
Adding the Color selection 
 
Adding the Background Image 
 
Adding The Gallery ImageButton To The UI 
 
Snackbar - AlertDialog - CustomDialogs Demo Part 1 
 
CustomDialogs Demo Part 2 
 
Custom Progress Bar Dialogs 
 
Adding Permission requests to our KidsDrawing App 
 
Selecting An Image from the gallery using it as a background 
 
Adding an undo button and functionality 
 
Do something in the Background using Coroutines 
 
Adding a provider - path and a image sandwitch maker to our app 
 
Saving an Image on The Phone using Coroutines and OutPutStreams 
 
Displaying The Custom Progress Dialog and Hiding it When done 
 
Adding a Share Feature To Share The Image Via-Email - Whatsapp etc. 
 
Intro to 7 Minute Workout App 
 
Using Viewbinding and getting rid of our actionbar 
 
Adding The Exercise Screen - Intents and Customizing our Toolbar 
 
Implementing Custom UI Elements For A PRogressbar To Tick Counterclock wise 
 
Using CountDownTimers To Display The Seconds remaining 
 
Adding the Exercise Timer 
 
Adding the Model Our Constants For The Exercises and Testing It Part 1 
 
Adding the Model Our Constants For The Exercises and Testing It Part 2 
 
Adding the Upcoming Exercise Text To the restview 
 
Adding Text to speech to our application 
 
Adding a Media Player to play a sounds once an exercise is over 
 
Viewbinding with Recyclerviews 
 
Preparing The RecyclerView For The Bottom To Display Exercise Numbers 
 
Creating our own custom recyclerviewadapter and viewholder 
 
Displaying the Recyclerview with the Exercise Numbers 
 
Displaying at witch exercise we currently are 
 
Creating the finish activity 
 
Setting up the CustomDialog for the Backbutton 
 
BMI Screen for the Metric system 
 
Adding Custom RadioGroups with Custom RadioButtons 
 
Adding the US View Elements 
 
FInalizing the BMI Calcutator with the us system 
 
Adding the History UI and Activity 
 
Looking at Lambdas once again 
 
Room Database Demo Part 1 - Introduction to Room Database 
 
Room Database Demo Part 2 - Setting up the Data Class - Room Entity 
 
Room Database Demo Part 3 - The Dao Interface and the Database Class 
 
Room Database Demo Part 4 - CREATE and store data 
 
Room Database Demo Part 5 - Preparing the ItemAdapter with Listeners 
 
Room Database Demo Part 6 - Displaying the Database entries 
 
Room Database Demo Part 7 - Updating and Deleting database entries 
 
Adding the Room Database to Our Workout App - Inserting Workouts 
 
Fetching Data from our Database and displaying it in the log 
 
Displaying the Workout History on our Recyclerview 
 
Summary - 7 Minutes Workout App 
 
Introduction to the chapter 
 
Setting Up The Happy Places App 
 
Adding The Add HappyPlaceActivity and using dimens string color 
 
Adding Calendar Picker And Populate Our Date Edit Text 
 
Using Third Party Libraries 
 
Using The Third Party Library DEXTER For Permission Handling 
 
DEMO - Taking Images With The Camera App and Using It In Our App 
 
Adding The Gallery Picking Functionality 
 
Adding Camera Picking Functionality 
 
Storing The Images On The Device 
 
Preparing The Database Handler And Creating Our Happy Place Model 
 
Saving A Happy Place Via SQLite 
 
Reading The Data From Our Local DB 
 
Preparing The RecyclerView 
 
Using A Third Party Library For Nice Rounded Images 
 
Adding ActivityForResult In Order To Update The List Dynamically 
 
Adding An OnClickListener To RecyclerView Element - Best Practice 
 
Passing Whole Objects from One Activity To Another - Serializable vs Parcalable 
 
Adding Swipe To Edit Functionality using ItemTouchHelper 
 
Fixing The Updating Duplication Bug 
 
Adding Swipe To Delete Functionality 
 
Using The Google Places API 
 
Displaying A Marker On The Map And Zooming In With An Animation 
 
Adding The Select Current Location Button And Permissions 
 
Getting The Users Location 
 
Getting The Address From The Latitude And Longitude 
 
Steps to integrate AdMob in your Android App in Kotlin 
 
Introduction - Weather App 
 
JSON And Tools - Introduction 
 
DEMO - Downloading A Website And Its Text in Android 
 
How Read And Use JSON Objects 
 
Using The GSON Library to Make Working With JSON Easier 
 
Introduction To OpenWeatherMap And General Overview 
 
Preparing The Project And Checking If Location Provider Is Turned On 
 
Preparing Permissionrequests Using Dexter 
 
Preparing the Internet Connection For RETROFIT And The API Calls 
 
Preparing The Models Based On The API 
 
Creating The API Call with Retrofit and Getting A Response 
 
Creating A Custom Dialog And Testing Different Internet Speeds 
 
Adding The UI And Setting It Up 
 
Adding The Sunrise And Sunset Time 
 
Changing The UI Depending On The Weather Data From The API 
 
Adding A Refresh Button In The Menu 
 
Storing The Data Via SharedPreferences And Preloading It 
 
Introduction to the chapter 
 
Setting Up The Splashscreen Using Custom Fonts And How To Find Them 
 
Setting Up The Intro Screen And Moving To It After 2 Second 
 
Designing The SignUp Activity 
 
Challenge - Seting Up The SignIn Activity 
 
Setting Up The BaseActivity For Reuse Functions 
 
Preparing The Signup Feature in Firebase And In The App 
 
Registering The User Via Email in Firebase 
 
Using The FireStore Database to Store The User Details Part 1 
 
Using The FireStore Database to Store The User Details Part 2 
 
Signing In And Getting The User Data 
 
Preparing The XML For The Drawer And Navigation Part 1 
 
Preparing The XML For The Drawer And Navigation Part 2 
 
Adding The Drawer Functionality In Code 
 
Loading The Image And Username To Display It In The Drawer 
 
Preparing The Profile Screen 
 
Populating The Profile Activity With User Data 
 
Image Chooser For The Profile Image 
 
Uploading An Image To Storage 
 
Updating the User Data Via HashMap In The FireStore Database 
 
Updating The MainActivit Profile Details via ActivityForResult 
 
The Create Board Activity 
 
Creating The Board In The Firestore Database 
 
Preparing The Boards Recyclerview Adapter And UI Elements 
 
Loading The Boards Into The Recyclerview 
 
Updating The BoardsList After Creating A New Board 
 
Loading The Board in The TaskListActivity 
 
Preparing The Tasklist Adapter 
 
Creating Lists Inside A Board 
 
Creating A List Inside A Board  Part 2 
 
Editing And Deleting Lists 
 
Adding The Cards To Lists 
 
Preparing The MembersActivity 
 
Creating The Member Item And The Toolbar 
 
Fetching And Displaying The Members Of  A Board 
 
Adding A New Member To A Board - Logic 
 
Reloading The Board Details On Change 
 
Adding A Detail Screen For Cards 
 
Loading Card Details To Set The Title Of The Card 
 
Adding The Delete Card Menu Icon ANd Populating The EditText Of The Card 
 
Preparing The Cards Color Dialog And Adapter 
 
Selecting The Color And Updating The Card 
 
Adding Colors To Our Cards 
 
Passing The Memberslist To The Card 
 
Preparing And Displaying The Card Members Dialog 
 
Prepare The Add Members Feature 
 
Finish The Add Members Feature 
 
Displaying The Assigned Users Per Card On The List Level 
 
Adding A Due Date To The App 
 
Adding The Drag And Drop Feature 
 
Preparing The Notification Feature 
 
Adding The Token To The DB 
 
Adding The Notifications Part 1 
 
Final Steps For The Notification Feature