1. Урок 1.00:01:54
    Introduction
  2. Урок 2.00:06:09
    The Udemy Interface
  3. Урок 3.00:19:23
    Introduction to Android
  4. Урок 4.00:11:19
    Windows - Install Android Studio
  5. Урок 5.00:06:36
    Mac - Install Android Studio
  6. Урок 6.00:11:36
    Linux - Install Android Studio
  7. Урок 7.00:12:05
    Configure Android SDK on all Three Platforms
  8. Урок 8.00:03:02
    Android Studio Settings
  9. Урок 9.00:13:55
    Enable VT-X in BIOS
  10. Урок 10.00:01:54
    Your Programming Careers Questions Answered
  11. Урок 11.00:00:41
    Introduction
  12. Урок 12.00:08:02
    Android Studio Templates
  13. Урок 13.00:08:26
    More on Android Templates
  14. Урок 14.00:12:44
    Hello World
  15. Урок 15.00:16:31
    Tour of Android Studio
  16. Урок 16.00:15:12
    Setting Up a Virtual Device
  17. Урок 17.00:09:51
    Running on an emulator
  18. Урок 18.00:12:27
    Running on a physical Android device
  19. Урок 19.00:10:34
    Kotlin Tutorial Setup
  20. Урок 20.00:09:10
    Kotlin Tutorial 1
  21. Урок 21.00:11:28
    Variables and Types
  22. Урок 22.00:11:50
    More on Variables and Types
  23. Урок 23.00:12:36
    String Concatenation and Interpolation
  24. Урок 24.00:10:20
    val and var and more on Declarations
  25. Урок 25.00:17:59
    Conditions
  26. Урок 26.00:19:35
    Classes
  27. Урок 27.00:14:54
    Objects and Instances
  28. Урок 28.00:06:25
    Challenge
  29. Урок 29.00:10:26
    Lists
  30. Урок 30.00:12:01
    More on Lists
  31. Урок 31.00:04:25
    toString Challenge
  32. Урок 32.00:14:08
    for Loops
  33. Урок 33.00:13:20
    for Encapsulation and Private Properties
  34. Урок 34.00:08:14
    Overloading Functions
  35. Урок 35.00:12:51
    Inheritance
  36. Урок 36.00:10:11
    More on Inheritance
  37. Урок 37.00:09:12
    Inheritance Continued
  38. Урок 38.00:09:53
    Further Inheritance
  39. Урок 39.00:14:19
    while Loops
  40. Урок 40.00:10:04
    for Loop Revisited
  41. Урок 41.00:05:15
    do while Loop
  42. Урок 42.00:12:38
    Loop Challenge
  43. Урок 43.00:02:28
    Introduction
  44. Урок 44.00:11:40
    Setup Play Project
  45. Урок 45.00:17:07
    The Constraint Layout
  46. Урок 46.00:15:18
    Constraints and Resizing
  47. Урок 47.00:07:53
    Positioning Widgets
  48. Урок 48.00:09:34
    Inner Lines within a Widget
  49. Урок 49.00:11:01
    Layouts on Different Devices
  50. Урок 50.00:12:49
    More on the Constraints
  51. Урок 51.00:09:56
    Baseline Constraints
  52. Урок 52.00:05:38
    Constraining Widgets
  53. Урок 53.00:13:33
    Add Scrolling Capabilities
  54. Урок 54.00:14:51
    The Button Counter App
  55. Урок 55.00:12:19
    Finish Layout
  56. Урок 56.00:13:50
    Coding Button Counter App
  57. Урок 57.00:12:47
    findViewById and r Class
  58. Урок 58.00:08:04
    Events and setonclicklistener
  59. Урок 59.00:14:11
    Testing and Challenge Time
  60. Урок 60.00:10:37
    Extending the Button App
  61. Урок 61.00:06:54
    Testing and Challenge
  62. Урок 62.00:03:59
    Fixing Kotlin Gradle Issues
  63. Урок 63.00:15:19
    The Activity Lifecycle
  64. Урок 64.00:09:05
    The Logcat Pane
  65. Урок 65.00:09:35
    Logging the Activity Lifecycle
  66. Урок 66.00:14:33
    Activity Lifecycle in Action
  67. Урок 67.00:15:10
    Saving and Restoring Instance State
  68. Урок 68.00:04:53
    Demo Calculator App
  69. Урок 69.00:15:37
    Calculator Interface Setup
  70. Урок 70.00:16:30
    Continue with Interface
  71. Урок 71.00:15:29
    Fine Tuning the Layout
  72. Урок 72.00:09:02
    Create Landscape Layout
  73. Урок 73.00:17:13
    Comparing FIles with Diff
  74. Урок 74.00:08:30
    Comparing Directories
  75. Урок 75.00:23:16
    Coding the Calculator
  76. Урок 76.00:07:05
    Add onClickListeners
  77. Урок 77.00:16:46
    Write Perform Operation Function
  78. Урок 78.00:14:14
    Bug Fix and Code Improvements
  79. Урок 79.00:19:53
    Bug Fix Challlenge and Save State
  80. Урок 80.00:07:29
    Widget References in Kotlin
  81. Урок 81.00:13:54
    Guidelines
  82. Урок 82.00:12:41
    Fixing Landscape Layout
  83. Урок 83.00:07:17
    Add Neg Button to Layout
  84. Урок 84.00:08:32
    Code Changes for Neg Button
  85. Урок 85.00:19:05
    Add Neg Button to Portrait
  86. Урок 86.00:10:48
    Introduction
  87. Урок 87.00:14:40
    AsyncTask
  88. Урок 88.00:09:01
    Logging and Logcat
  89. Урок 89.00:14:39
    Download the RSS Feed
  90. Урок 90.00:20:06
    Reading the Data
  91. Урок 91.00:20:04
    Android Permissions
  92. Урок 92.00:15:01
    Writing Idiomatic Kotlin
  93. Урок 93.00:07:07
    More Idiomatic Kotlin
  94. Урок 94.00:19:07
    Parsing the Data
  95. Урок 95.00:15:09
    Create Xml Parse Function
  96. Урок 96.00:10:13
    Testing the App
  97. Урок 97.00:13:20
    ListView and ArrayAdapter
  98. Урок 98.00:17:03
    Code Changes for Array Adapter
  99. Урок 99.00:07:32
    onDestroy and Asynctask
  100. Урок 100.00:11:44
    Create Custom Adapter
  101. Урок 101.00:17:20
    Custom Adapter Code
  102. Урок 102.00:12:43
    Improving the Adapter
  103. Урок 103.00:12:10
    ViewHolder Pattern
  104. Урок 104.00:09:00
    Adding a Menu - Layout
  105. Урок 105.00:16:06
    Adding A Menu - Code
  106. Урок 106.00:09:32
    Menu Groups - Layout
  107. Урок 107.00:15:57
    Menu Groups - Code
  108. Урок 108.00:15:32
    Challenge Solution
  109. Урок 109.00:17:55
    Setup
  110. Урок 110.00:13:28
    YouTube Activity
  111. Урок 111.00:10:00
    Adding Widgets Dynamically
  112. Урок 112.00:11:42
    Google API Key
  113. Урок 113.00:07:58
    Add Key to Code
  114. Урок 114.00:13:34
    The YouTube Player
  115. Урок 115.00:13:12
    onInitializationSuccess Method
  116. Урок 116.00:10:44
    Adding Listeners
  117. Урок 117.00:06:25
    Improving the Player
  118. Урок 118.00:05:29
    Extending App Layouts
  119. Урок 119.00:12:30
    Extending Youtube App Code
  120. Урок 120.00:17:54
    Implementing Intents and Challenge
  121. Урок 121.00:05:11
    Challenge Solution
  122. Урок 122.00:15:11
    More Error Handling
  123. Урок 123.00:04:07
    Introduction
  124. Урок 124.00:15:37
    Flick App and Feeds
  125. Урок 125.00:13:39
    Json and Mini challenge
  126. Урок 126.00:15:40
    Log Tag and Companion Objects
  127. Урок 127.00:12:15
    Download JSON - doInBackground
  128. Урок 128.00:13:29
    Downloading the JSON
  129. Урок 129.00:16:15
    CallBacks
  130. Урок 130.00:08:22
    Project Diagram and Photo Class
  131. Урок 131.00:20:08
    GetFlickJsonData class
  132. Урок 132.00:18:36
    GetFlickrJsonData class continued
  133. Урок 133.00:12:03
    Uri Builder
  134. Урок 134.00:12:08
    Flickr Browser User Inferface
  135. Урок 135.00:15:10
    RecyclerView Layouts
  136. Урок 136.00:05:44
    Finishing Browse Layout
  137. Урок 137.00:08:45
    Search and PhotoDetail Activities
  138. Урок 138.00:15:59
    Nested Layouts
  139. Урок 139.00:17:30
    Recyclerview Adapter
  140. Урок 140.00:14:13
    onBindViewHolder and Picasso
  141. Урок 141.00:06:55
    Associate Adapter to Recyclerview
  142. Урок 142.00:18:48
    RecyclerItemClickListener
  143. Урок 143.00:15:44
    GestureDetector
  144. Урок 144.00:16:01
    Displaying the full photo
  145. Урок 145.00:17:01
    Serializable
  146. Урок 146.00:05:57
    Modify Photo Details Activity
  147. Урок 147.00:09:06
    Parcelable
  148. Урок 148.00:13:56
    Material Design
  149. Урок 149.00:09:51
    More on Material Design
  150. Урок 150.00:06:34
    AppCompat - Backwards Compatibility
  151. Урок 151.00:12:07
    Style Sheets
  152. Урок 152.00:12:58
    Custom Style Sheets
  153. Урок 153.00:12:03
    Namespaces
  154. Урок 154.00:10:48
    Other Material Design Changes
  155. Урок 155.00:08:59
    Differences in API Levels
  156. Урок 156.00:10:24
    String Resources
  157. Урок 157.00:10:33
    String Resources Placeholders
  158. Урок 158.00:04:58
    Adding the Search Feature
  159. Урок 159.00:13:17
    SearchView
  160. Урок 160.00:12:09
    More on SearchView
  161. Урок 161.00:09:33
    SearchView Events
  162. Урок 162.00:10:21
    SharedPreferences
  163. Урок 163.00:08:30
    Telling Fibs
  164. Урок 164.00:01:18
    Introduction
  165. Урок 165.00:05:07
    Introduction to Databases
  166. Урок 166.00:10:43
    Database Terminology
  167. Урок 167.00:09:42
    Command Line and Path Setup for Windows
  168. Урок 168.00:08:07
    Command Line and Path Setup for Mac
  169. Урок 169.00:06:18
    Command Line and Path Setup for Ubuntu Linux
  170. Урок 170.00:11:16
    Introduction to Sqlite
  171. Урок 171.00:10:46
    More SQL with Sqlite
  172. Урок 172.00:16:07
    Sqlite Querying Data
  173. Урок 173.00:13:19
    Order By and Joins
  174. Урок 174.00:11:52
    More Complex Joins
  175. Урок 175.00:15:18
    Wild Cards and Views
  176. Урок 176.00:14:24
    Housekeeping and Challenge
  177. Урок 177.00:10:23
    Basic SQL in Android
  178. Урок 178.00:11:44
    Create Table Add Data and Test
  179. Урок 179.00:17:50
    Cursor and Navigation
  180. Урок 180.00:16:28
    Android File System
  181. Урок 181.00:02:56
    Content Providers
  182. Урок 182.00:11:40
    Setting up the Emulators
  183. Урок 183.00:07:43
    Contact Provider App Layout
  184. Урок 184.00:10:14
    The ContactsContract
  185. Урок 185.00:08:42
    ContentResolver and Abstraction
  186. Урок 186.00:09:34
    Retrieving Data with a ContentResolver
  187. Урок 187.00:13:33
    Permissions
  188. Урок 188.00:15:01
    Checking Permissions at Runtime
  189. Урок 189.00:09:17
    Testing the App
  190. Урок 190.00:08:12
    Avoiding Crashes Snackbars and a Challenge
  191. Урок 191.00:11:00
    More on Snackbars
  192. Урок 192.00:14:41
    Intents, setData and Uris
  193. Урок 193.00:06:25
    Problems Storing State
  194. Урок 194.00:04:27
    Remove Saving of State
  195. Урок 195.00:07:09
    Test Scripts Challenge and Cleanup
  196. Урок 196.00:02:18
    Introduction
  197. Урок 197.00:04:10
    Androids ViewModel Class
  198. Урок 198.00:13:37
    Using a ViewModel
  199. Урок 199.00:21:49
    Finish ViewModel Changes
  200. Урок 200.00:08:38
    Exposing LiveData
  201. Урок 201.00:07:47
    Swapping the ViewModel
  202. Урок 202.00:10:28
    ViewModel with Top 10 Downloader
  203. Урок 203.00:16:02
    Implement ViewModel
  204. Урок 204.00:10:23
    Final Changes
  205. Урок 205.00:04:27
    App Testing
  206. Урок 206.00:18:31
    The TaskTimer Application
  207. Урок 207.00:11:51
    Database Setup
  208. Урок 208.00:07:07
    Tasks Contract Class
  209. Урок 209.00:09:21
    AppDatabase Class
  210. Урок 210.00:08:40
    Create SQL for Tasks Table
  211. Урок 211.00:11:01
    Singleton AppDatabase Class
  212. Урок 212.00:12:15
    onUpgrade and Testing
  213. Урок 213.00:17:50
    The ContentProvider
  214. Урок 214.00:20:56
    uriMatcher
  215. Урок 215.00:03:19
    Updating Build Files
  216. Урок 216.00:12:12
    The Content URI
  217. Урок 217.00:11:55
    Register the ContentProvider
  218. Урок 218.00:12:19
    Using appendWhereEscapeString
  219. Урок 219.00:09:08
    Mime Types in the Content Provider
  220. Урок 220.00:09:12
    Content Provider Insert
  221. Урок 221.00:12:24
    Update and Delete
  222. Урок 222.00:12:46
    Testing Insert and Update
  223. Урок 223.00:14:50
    Testing Bulk Update and Delete
  224. Урок 224.00:15:31
    Main Menu UI
  225. Урок 225.00:14:43
    Task UI Layout
  226. Урок 226.00:05:55
    Task List Items Constraints
  227. Урок 227.00:17:00
    Add / Edit Layout
  228. Урок 228.00:12:22
    The Kotlin Data Class
  229. Урок 229.00:18:54
    The Add / Edit Fragment
  230. Урок 230.00:12:46
    Swapping Fragments
  231. Урок 231.00:13:20
    Multi-pane Fragments
  232. Урок 232.00:15:50
    Multi-pane Displays
  233. Урок 233.00:10:36
    Enabling Two-pane Mode
  234. Урок 234.00:12:52
    The Fragment Lifecycle Part 1
  235. Урок 235.00:07:38
    The Fragment Lifecycle Part 2
  236. Урок 236.00:14:56
    Logging the Fragment Lifecycle
  237. Урок 237.00:11:36
    Android SDK Gradle and Kotlin Updates
  238. Урок 238.00:07:50
    Up and Back Navigation for Fragments
  239. Урок 239.00:03:48
    Object can have More than One Type
  240. Урок 240.00:06:32
    Removing the Up Button
  241. Урок 241.00:06:44
    Back Navigation
  242. Урок 242.00:10:17
    Completing the AddEdit UI
  243. Урок 243.00:10:33
    Saving the Task Details
  244. Урок 244.00:07:36
    Test Saving
  245. Урок 245.00:04:37
    Updating Android Studio, Kotlin, and Gradle
  246. Урок 246.00:04:51
    Fixing New Kotlin Warnings
  247. Урок 247.00:07:00
    Layout Container
  248. Урок 248.00:16:20
    RecyclerView CursorAdapter
  249. Урок 249.00:01:44
    Introducing David Reidy
  250. Урок 250.00:12:16
    Tricky String Resources
  251. Урок 251.00:07:32
    The ViewModel Class
  252. Урок 252.00:03:29
    Subscribe to The ViewModel
  253. Урок 253.00:09:27
    Notifications and Observers
  254. Урок 254.00:04:36
    Responding to Taps
  255. Урок 255.00:02:51
    onClick Listeners, Interfaces and Callbacks
  256. Урок 256.00:04:33
    Responding to Clicks from the Adapter
  257. Урок 257.00:05:59
    Solution to The Interface Challenge
  258. Урок 258.00:09:58
    Deleting a Task from The Database
  259. Урок 259.00:07:43
    Accessing a Database on a Background Thread
  260. Урок 260.00:04:38
    Background Processing Using a Coroutine
  261. Урок 261.00:09:07
    Clean Up AddEditFragment
  262. Урок 262.00:05:22
    Saving in The ViewModel
  263. Урок 263.00:05:38
    Sharing ViewModel Instances
  264. Урок 264.00:14:15
    AndroidX
  265. Урок 265.00:04:23
    Introduction to Dialogs
  266. Урок 266.00:15:53
    AppDialog Class Part 1
  267. Урок 267.00:08:49
    AppDialog Class Part 2
  268. Урок 268.00:05:53
    Adding a Dialog to The App
  269. Урок 269.00:11:45
    Dialog CallBacks
  270. Урок 270.00:08:15
    Asserts and BuildConfig
  271. Урок 271.00:05:55
    Strange Dialog Behavior
  272. Урок 272.00:07:55
    Confirming Exit Without Saving
  273. Урок 273.00:04:20
    Implementing the Interface
  274. Урок 274.00:08:46
    Kotlin Extension Functions
  275. Урок 275.00:13:39
    Image Asset Studio
  276. Урок 276.00:10:57
    Create an About Dialog the Layout Part 1
  277. Урок 277.00:11:32
    Create an About Dialog the Layout Part 2
  278. Урок 278.00:12:11
    Displaying the About Dialog
  279. Урок 279.00:08:07
    Versioning and build.gradle
  280. Урок 280.00:08:59
    Dismissing the Dialogue
  281. Урок 281.00:08:35
    Supporting Older Versions
  282. Урок 282.00:15:04
    Compatibility Challenge Solution Part 1
  283. Урок 283.00:12:26
    Compatibility Challenge Solution Part 2
  284. Урок 284.00:03:06
    Introduction
  285. Урок 285.00:10:54
    Settings Dialog Layout
  286. Урок 286.00:04:04
    Settings Dialog
  287. Урок 287.00:07:31
    DefaultSharedPreferences
  288. Урок 288.00:08:09
    SeekBar Values
  289. Урок 289.00:09:31
    Quantity String Resources
  290. Урок 290.00:03:41
    Setting Dialog Title
  291. Урок 291.00:06:18
    Retain Instance State
  292. Урок 292.00:04:14
    Introduction
  293. Урок 293.00:07:13
    A Correction and the Device File Explorer
  294. Урок 294.00:11:46
    Database Updates
  295. Урок 295.00:06:21
    Saving the Timing Data
  296. Урок 296.00:04:16
    The saveTiming Function
  297. Урок 297.00:03:38
    Testing Timings
  298. Урок 298.00:04:55
    Providing Feedback
  299. Урок 299.00:03:59
    Data Loss
  300. Урок 300.00:04:06
    Storing the Current Timing Records
  301. Урок 301.00:04:47
    Solution - Retrieving the Current Time Record
  302. Урок 302.00:02:02
    Solution Continued
  303. Урок 303.00:06:49
    Finish Solution and Test
  304. Урок 304.00:06:32
    When the Battery Dies
  305. Урок 305.00:12:53
    Creating Test Data
  306. Урок 306.00:03:37
    Generating the Test Data
  307. Урок 307.00:10:08
    Debug and Release Builds
  308. Урок 308.00:11:54
    Using a SQLite view
  309. Урок 309.00:08:04
    Adding the view to the Database
  310. Урок 310.00:03:30
    Adding the view to the ContentProvider
  311. Урок 311.00:07:16
    Testing the Database Upgrade
  312. Урок 312.00:09:03
    ConstraintLayout Chains
  313. Урок 313.00:12:29
    Chain Types
  314. Урок 314.00:10:19
    Finishing the reports layouts - challenge
  315. Урок 315.00:09:17
    The Landscape Layouts
  316. Урок 316.00:10:43
    The Report Adapter
  317. Урок 317.00:12:11
    The Durations Report Activity
  318. Урок 318.00:06:56
    Testing Different Locales
  319. Урок 319.00:06:30
    Creating the reports ViewModel
  320. Урок 320.00:02:33
    Using the DurationsViewModel
  321. Урок 321.00:06:41
    Sorting the Report Data
  322. Урок 322.00:13:10
    Vector Drawables and Asset Studio
  323. Урок 323.00:05:28
    The Report Menu
  324. Урок 324.00:07:39
    Report Menu Code - day/week toggle
  325. Урок 325.00:15:22
    The DatePickerDialog
  326. Урок 326.00:05:57
    Filtering by Date
  327. Урок 327.00:10:13
    Filtering in the DurationsViewModel
  328. Урок 328.00:07:31
    Testing the Report Filters
  329. Урок 329.00:09:40
    Unbuggy DatePickerDialog
  330. Урок 330.00:09:24
    Deleting old Timings data
  331. Урок 331.00:04:03
    Testing Mass Deletion
  332. Урок 332.00:04:28
    Observing the cursor in the ViewModel
  333. Урок 333.00:05:02
    A Minor Bug
  334. Урок 334.00:09:08
    Observing a Configuration Change
  335. Урок 335.00:08:05
    Testing the Bug Fix
  336. Урок 336.00:06:14
    Using the First Day Of Week Setting
  337. Урок 337.00:04:28
    Taking Advantage of Later Features
  338. Урок 338.00:04:10
    Testing the new DatePickerFragment
  339. Урок 339.00:07:20
    Observing SharedPreference changes
  340. Урок 340.00:09:37
    Solution to Ignore Short Timings Challenge
  341. Урок 341.00:04:49
    Bonus Lecture and Information