Exploring Android
- Preface
- What We Are Building
- Installing the Tools
- Creating a Starter Project
- Modifying the Manifest
- Changing Our Icon
- Adding a Library
- Constructing a Layout
- Integrating Fragments
- Wiring In Navigation
- Setting Up the App Bar
- Setting Up an Activity
- Defining a Model
- Setting Up a Repository
- Inverting Our Dependencies
- Incorporating a ViewModel
- Populating Our RecyclerView
- Tracking the Completion Status
- Displaying an Item
- Step #1: Creating the Fragment
- Step #2: Updating the Navigation Graph
- Step #3: Responding to List Clicks
- Step #4: Teaching Navigation About the App Bar
- Step #5: Creating an Empty Layout
- Step #6: Adding the Completed Icon
- Step #7: Displaying the Description
- Step #8: Showing the Created-On Date
- Step #9: Adding the Notes
- Step #10: Adding Navigation Arguments
- Step #11: Displaying the Layout
- Step #12: Making Another Motor
- Step #13: Populating the Layout
- Final Results
- What We Changed
- Editing an Item
- Step #1: Creating the Fragment
- Step #2: Setting Up the Navigation
- Step #3: Setting Up a Menu Resource
- Step #4: Showing the App Bar Item
- Step #5: Displaying the (Empty) Fragment
- Step #6: Creating an Empty Layout
- Step #7: Adding the CheckBox
- Step #8: Creating the Description Field
- Step #9: Adding the Notes Field
- Step #10: Populating the Layout
- Final Results
- What We Changed
- Saving an Item
- Adding and Deleting Items
- Step #1: Trimming Our Repository
- Step #2: Showing an Empty View
- Step #3: Adding an Add App Bar Item
- Step #4: Launching the EditFragment for Adds
- Step #5: Hiding the Empty View
- Step #6: Adding a Delete App Bar Item
- Step #7: Deleting the Item
- Step #8: Fixing the Delete-on-Add Problem
- Final Results
- What We Changed
- Interlude: So, What’s Wrong?
- Refactoring Our Code
- Getting a Room (And Some Coroutines)
- Completing the Reactive Architecture
- Testing a Motor
- Step #1: Examine Our Existing Tests
- Step #2: Decide on Instrumented Tests vs. Unit Tests
- Step #3: Adding Some Unit Test Dependencies
- Step #4: Renaming Our Unit Test
- Step #5: Running the Stub Unit Test
- Step #6: Adding a MainDispatcherRule
- Step #7: Setting Up a Mock Repository
- Step #8: Adding a Test Function
- Step #9: Adding Another Test Function
- Final Results
- What We Changed
- Testing the Repository
- Testing a UI
- Tracking Our Load Status
- Filtering Our Items
- Generating a Report
- Sharing the Report
- Collecting a Preference
- Contacting a Web Service
- Showing a Dialog
- Scheduling Work
This book is licensed under the Creative Commons Attribution-ShareAlike 4.0 International license.