Android development with Kotlin: learn Android application development with the extensive features of Kotlin
โ Scribed by Moskala, Marcin; Wojda, Igor
- Publisher
- Packt Publishing
- Year
- 2017
- Tongue
- English
- Leaves
- 435
- Category
- Library
No coin nor oath required. For personal study only.
โฆ Table of Contents
Cover......Page 1
Copyrights......Page 3
Credits......Page 4
About the Authors......Page 5
About the Reviewers......Page 7
www.PacktPub.com......Page 8
Customer Feedback......Page 9
Table of Contents......Page 10
Preface......Page 16
Chapter 1: Beginning Your Kotlin Adventure......Page 22
Say hello to Kotlin......Page 23
Awesome Kotlin examples......Page 25
Kotlin Playground......Page 31
Configuring Kotlin for the project......Page 33
Using Kotlin in a new Android project......Page 36
Java to Kotlin converter (J2K)......Page 38
Alternative ways to run Kotlin code......Page 39
Kotlin under the hood......Page 40
More reasons to use Kotlin......Page 41
Summary......Page 43
Chapter 2: Laying a Foundation......Page 44
Variables......Page 45
Type inference......Page 47
Strict null safety......Page 51
Safe call......Page 54
Elvis operator......Page 55
Not-null assertion......Page 56
The let function......Page 57
Nullability and Java......Page 58
Safe/unsafe cast operator......Page 60
Smart casts......Page 62
Type smart casts......Page 63
Non-nullable smart cast......Page 65
Primitive data types......Page 66
Numbers......Page 67
Char......Page 69
Arrays......Page 70
The Boolean type......Page 71
String templates......Page 72
Ranges......Page 73
Statements versus expressions......Page 75
Control flow......Page 76
The if statement......Page 77
The when expression......Page 78
The for loop......Page 82
The while loop......Page 83
Break and continue......Page 84
Exceptions......Page 88
The try... catch block......Page 90
Compile-time constants......Page 91
Delegates......Page 92
Summary......Page 93
Chapter 3: Playing with Functions......Page 94
Basic function declaration and usage......Page 95
Parameters......Page 96
Returning functions......Page 98
Vararg parameter......Page 100
Single-expression functions......Page 101
Tail-recursive functions......Page 104
Default argument values......Page 106
Named arguments syntax......Page 107
Top-level functions......Page 108
Top-level functions under the hood......Page 110
Local functions......Page 112
Nothing return type......Page 114
Summary......Page 116
Chapter 4: Classes and Objects......Page 117
Properties......Page 118
Read-write versus read-only......Page 122
Property access syntax between Kotlin and Java......Page 123
Increment and decrement operators......Page 124
Custom getters/setters......Page 127
The getter versus property default value......Page 129
Late-initialized properties......Page 130
Annotating properties......Page 131
Inline properties......Page 132
Constructors......Page 133
Properties versus constructor parameters......Page 135
Patterns......Page 136
Inheritance......Page 137
The JvmOverloads annotation......Page 141
Interfaces......Page 142
Data classes......Page 146
The equals and hashCode methods......Page 147
The toString method......Page 149
The copy method......Page 150
Destructing declarations......Page 151
Operator overloading......Page 153
Object declaration......Page 156
Object expression......Page 158
Companion objects......Page 161
Companion object instantiation......Page 163
Enum classes......Page 166
Infix calls for named methods......Page 169
Visibility modifiers......Page 173
The internal modifier and Java bytecode......Page 176
Sealed classes......Page 178
Nested classes......Page 180
Import aliases......Page 181
Summary......Page 183
Chapter 5: Functions as First-Class Citizens......Page 184
Function types......Page 185
What is function type under the hood?......Page 186
Anonymous functions......Page 187
Lambda expressions......Page 189
The implicit name of a single parameter......Page 192
Higher-order functions......Page 193
Providing operations to functions......Page 195
A callback after a threaded operation......Page 196
Combination of named arguments and lambda expressions......Page 197
The last lambda in an argument convention......Page 198
Named code surrounding......Page 200
Java SAM support in Kotlin......Page 202
Named parameters in function types......Page 205
Type alias......Page 206
Underscore for unused variables......Page 209
Destructuring in lambda expressions......Page 210
Inline functions......Page 212
The noinline modifier......Page 215
Non-local returns......Page 216
Labeled returns in lambda expressions......Page 219
Crossinline modifier......Page 222
Inline properties......Page 224
Function references......Page 225
Summary......Page 228
Chapter 6: Generics Are Your Friends......Page 229
The need for generics......Page 230
Type parameters versus type arguments......Page 231
Generic constraints......Page 232
Nullability......Page 233
Variance......Page 235
Variance modifiers......Page 237
Use-site variance versus declaration-site variance......Page 239
Collection variance......Page 240
Variance producer/consumer limitation......Page 243
Type erasure......Page 245
Reified type parameters......Page 247
Star-projections......Page 249
Type parameter naming convention......Page 251
Summary......Page 252
Chapter 7: Extension Functions and Properties......Page 253
Extension functions......Page 254
Extension functions under the hood......Page 256
No method overriding......Page 257
Access to receiver elements......Page 258
Companion object extensions......Page 259
Operator overloading using extension functions......Page 260
Where should top-level extension functions be used?......Page 261
Extension properties......Page 262
Where should extension properties be used?......Page 264
Member extension functions and properties......Page 266
Types of receivers......Page 269
Member extension functions and properties under the hood......Page 271
Generic extension functions......Page 272
Collection processing......Page 274
The Kotlin collection type hierarchy......Page 276
The map, filter, and flatMap functions......Page 280
The withIndex and indexed variants......Page 282
The sum, count, min, max, and sorted functions......Page 283
Examples of stream collection processing......Page 287
Sequence......Page 290
Function literals with a receiver......Page 292
Kotlin standard library functions......Page 293
The let function......Page 295
The also function......Page 297
The run and with functions......Page 298
Domain-specific language......Page 300
Anko......Page 307
Summary......Page 308
Chapter 8: Delegates......Page 309
The Delegation pattern......Page 310
Decorator pattern......Page 316
What are delegated properties?......Page 319
The lazy function......Page 322
The notNull function......Page 328
The observable delegate......Page 330
The vetoable delegate......Page 332
Property delegation to the Map type......Page 334
Custom delegates......Page 337
View binging......Page 340
Preference binding......Page 342
Providing a delegate......Page 346
Summary......Page 348
Chapter 9: Making Your Marvel Gallery Application......Page 349
Marvel Gallery......Page 350
How to use this chapter......Page 351
Making an empty project......Page 354
Character gallery......Page 358
View implementation......Page 359
Network definition......Page 372
Business logic implementation......Page 381
Putting it all together......Page 397
Character search......Page 400
Character profile display......Page 412
Summary......Page 429
Index......Page 430
๐ SIMILAR VOLUMES
Nowadays, improved application development does not just mean building better performing applications. It has become crucial to find improved ways of writing code. Kotlin is a language that helps developers build amazing Android applications easily and effectively. This book discusses Kotlin feature