现代食品食谱应用程序 - 使用 Kotlin 进行 Android 开发
- 1 - Introduction
- 1 - Introduction
- 2 - Application Design
- 3 - Application Preview
- 4 - Project Structure Overview
- 5 - Introducing with API
- 6 - API Response Example
- 7 - Github Repository
- 2 - Navigation Component Setup
- 8 - Project Setup
- 9 - Navigation Component Setup
- 3 - Design RecipesFragment Layout
- 10 - Design RecipesFragment Layout
- 11 - Design RecipesRowLayout
- 12 - Design Recyclerview Placeholder Layout
- 4 - Start with Retrofit
- 13 - Introducing with Retrofit
- 14 - Generate Model classes for API
- 15 - Create Constants class
- 16 - Create RecipesApi interface
- 17 - Project Structure Overview RemoteDataSource class
- 5 - Introducing with Dependency Injection
- 18 - Dependency Injection Overview
- 19 - Manual Dependency Injection
- 20 - Dagger Basics
- 21 - Hilt Dependency Injection Library Part 1
- 22 - Hilt Dependency Injection Library Part 2
- 23 - Component Scoping
- 6 - DaggerHilt Setup NetworkModule
- 24 - Create MyApplication class
- 25 - Create NetworkModule
- 26 - Inject RemoteDataSource class
- 27 - Create and Inject Repository class
- 28 - Create NetworkResult class
- 29 - Create and Inject MainViewModel class
- 7 - Introducing with Data Binding
- 30 - Introducing with Data Binding
- 31 - Binding Adapters
- 8 - Display API Data in Recyclerview
- 32 - Create RecipesAdapter class
- 33 - DiffUtil Create RecipesDiffUtil class
- 34 - Create RecipesRowBinding class
- 35 - RecipesFragment Connect the Dots
- 36 - Create RecipesViewModel class
- 37 - Lets Recap
- 9 - Introducing with ROOM Library
- 38 - Introducing with ROOM Library
- 10 - ROOM Database
- 39 - Offline Caching
- 40 - Introducing with Kotlin Flow
- 41 - Create Entity RecipesEntity
- 42 - Create DAO RecipesDao
- 43 - Create Type Converter RecipesTypeConverter
- 44 - Create Database RecipesDatabase
- 11 - DaggerHilt Setup DatabaseModule
- 45 - Create DatabaseModule
- 46 - Create and Inject LocalDataSource
- 47 - MainViewModel Offline Cache
- 48 - RecipesFragment Read from Database
- 49 - ObserveOnce Extension Function
- 50 - Database Inspector
- 51 - Placeholder Image Error
- 52 - Create RecipesBinding class
- 12 - Introducing with DataStore Preferences
- 53 - Introducing with DataStore Preferences
- 13 - Add Bottom Sheet
- 54 - About BottomSheet
- 55 - Design RecipesBottomSheet
- 56 - Navigate to RecipesBottomSheet
- 57 - Customize Chip Style
- 58 - Create and Inject DataStoreRepository class
- 59 - Modify and Inject RecipesViewModel
- 60 - RecipesBottomSheet Persist Selected Chips
- 61 - Handle Return from BottomSheet Safe Args
- 62 - Bottom Sheet Recap
- 14 - Handle Internet Connection
- 63 - Introducing with StateFlow
- 64 - Create NetworkListener class
- 65 - RecipesFragment Listen for Internet Connection
- 66 - Back Online Persist data with DataStore
- 15 - Search Recipes
- 67 - Design RecipesFragment Menu
- 68 - FoodRecipesApi searchRecipes
- 69 - RemoteDataSource searchRecipes
- 70 - MainViewModel Handle Search Response
- 71 - RecipesFragment searchApiData
- 16 - DetailsActivity OverviewFragment
- 72 - Design activitydetails Layout
- 73 - Send Result to DetailsActivity Safe Args
- 74 - Create PagerAdapter class
- 75 - Design fragmentoverview Layout
- 76 - OverviewFragment Display Recipe Data
- 77 - Parse HTML Text Jsoup
- 17 - IngredientsFragment
- 78 - Design fragmentingredients Layout
- 79 - Design ingredientsrowlayout
- 80 - Modify RecipesDiffUtil class
- 81 - Create IngredientsAdapter class
- 82 - IngredientsFragment Display Ingredients Data
- 18 - InstructionsFragment
- 83 - Modify InstructionsFragment
- 84 - Modify OverviewFragment recipesrowlayout
- 19 - ROOM Database Favorite Recipes
- 85 - Create FavoritesEntity class
- 86 - Modify RecipesTypeConverter class
- 87 - Modify RecipesDao interface
- 88 - Modify LocalDataSource class
- 89 - Modify MainViewModel class
- 90 - Modify RecipesDatabase class
- 20 - Add to Favorites Details Activity
- 91 - Create detailsmenu
- 92 - Save Recipe to Favorites
- 93 - Check if Recipe is Saved
- 94 - Remove Recipe from Favorites
- 21 - FavoriteRecipesFragment
- 95 - Design fragmentfavoriterecipes Layout
- 96 - Design favoriterecipesrowlayout
- 97 - Create FavoriteRecipesAdapter class
- 98 - Display Favorite Recipes
- 99 - Create FavoriteRecipesBinding class
- 22 - Contextual Action Mode
- 100 - FavoriteRecipesFragment Single Click Listener
- 101 - FavoriteRecipesFragment Long Click Listener
- 102 - Apply Contextual Action Mode Style
- 103 - Recipe Selection Style onLongClick
- 104 - Apply Contextual Action Mode Title
- 105 - Delete Selected Favorite Recipes
- 106 - Close Contextual Action Mode
- 107 - FavoriteRecipesFragment ParseHTML
- 108 - Recap Contextual Action Mode
- 109 - Create favoriterecipesmenu
- 23 - FoodJokeFragment
- 110 - Design fragmentfoodjoke
- 111 - Create FoodJoke model class
- 112 - Create FoodJoke GET Request
- 113 - Modify RemoteDataSource FoodJoke
- 114 - Modify MainViewModel FoodJoke
- 115 - Offline Cache FoodJoke
- 116 - FoodJokeFragment Lets Start
- 117 - FoodJokeBinding class Part 1
- 118 - FoodJokeBinding class Part 2
- 119 - Add Share Menu
- 120 - Recap FoodJokeFragment
- 24 - Splash Screen
- 121 - Add Splash Screen
- 25 - Dark Theme
- 122 - RecipesFragment Dark Theme
- 123 - FavoriteRecipesFragment Dark Theme
- 124 - FoodJokeFragment Dark Theme
- 125 - RecipesBottomSheet Dark Theme
- 126 - Placeholder Row Layout Dark Theme
- 127 - DetailsActivity Dark Theme
- 128 - OverviewFragment Dark Theme
- 129 - IngredientsFragment Dark Theme
- 26 - Motion Layout
- 130 - Add Motion Layout OverviewFragment
- 27 - App Icon
- 131 - Add App Icon
- 28 - Final Word
- 132 - Final Word
- 29 - Course Updates Bug Hunt Code Cleanup
- 133 - DataStore 100alpha04 Package Issue Fixed
- 134 - Internet Connection Bug Fixed
- 135 - Migrate from kotlinandroidextensions plugin
- 136 - Migrate to ViewPager2
- 137 - Code Cleanup RecipesBinding RecipesRowBinding
- 138 - Fix a Memory Leak RecipesBottomSheet
- 139 - FavoriteRecipesBinding Code Cleanup
- 140 - Yellow Star Issue Fixed
- 141 - Multi Selection Mode Fixed
- 142 - RecyclerView Item Selection State Fixed
- 143 - Dependency Update DaggerHilt and Data Store
- 144 - Dependency Update DataStoreAlpha07
- 145 - OverviewFragment Code Cleanup
- 146 - Jcenter Migration Code Cleanup Bug Fix
- 147 - RecipesBottomSheet bug fixed Updated updateChip fun
- 148 - Motion Layout View Pager gestures conflict Fixed
- 149 - NetworkListeners class function Updated
- 150 - Removing Deprecated Code