Have you ever wondered why your Android app doesn‘t behave as expected? Why doesn’t it show data that you expect or have you ever even wondered if there are really any data at all? The situation is even more complicated if you use Content Providers for your database. Discussion about benefits and disadvantages of Content Providers is outside scope of this post but you will probably agree that it is more complicated to write queries using Content Providers than by raw SQL.
There are more ways around this.
Continue reading
Kotlin Higher-Order Functions
A higher order function is a function that takes a function as a parameter or it returns a function. It allows us to write shorter and more beautiful code. Let‘s look at some examples.
fun <T> tryAndCatch(block: () -> T) = try { block() } catch (e: Exception) { println(e.message) }
This function will run code passed inside block variable inside try catch block and return result and also print exception in case it is thrown. What does it all mean?
Continue reading
Create your own File Templates in Android Studio
You already know that you can make templates for code snippets in Android Studio. You can do same thing for whole files as well. And you probably use file templates even if you didn‘t yet created your own.
Everytime you create new file using New menu, you are creating files based on file templates.
Kotlin Data Classes
The main purpose of many classes is to hold data. But to effectively manipulative with data, we need to override quite a lot data. Class holding 3 String values would typically look something like this in Java:
Continue reading
How to check object equality in Kotlin?
Unlike Java, Kotlin is purely object-oriented language. There are no primitives, everything is an object. With this said, you might be surprised by results.
Let’s compare two objects with equality operator:
object1 == object2
You expected to get false, right? But answer is true. Why? This code is translated to
a?.equals(b) ?: (b === null)
How to check object equality in Java?
Java is not purely object-oriented programming language. We can use both objects and primitives for our variables. We can check easily if two primitives are same by identity operator ==. It is not as easy for objects.
==
Comparing objects with == is one of the frequented beginner’s mistakes. A beginner will check if two Strings with value “apple” are same and the answer is false. Because it doesn’t really check if objects are same but whether they point to the same memory address. How can you then check real equality of objects? Equals is the method you have to use.
Continue reading
Android Studio Live Templates
One of best programming practices is DRY. Don’t repeat yourself. And yet we often write similar blocks of code over and over again. And sometimes it really cannot be avoided. You can save yourself lot of time when you meet Android live and file templates. In this post, I write about live templates but I am sure I will come back to file templates later.
So how can you use live templates? Simply type template abbreviation, press Tab and block of code defined in template comes up. There are many live templates already included in Android Studio, but you can also define your own. To see them go to Editor, Settings and Live Templates. There they are, by default sorted by a programming language of their use. Looking like this.
Continue reading
Kotlin Constructors
Kotlin helps you make your code shorter and more readable in many areas. One of them is constructors. In Java you have to tediously assign all variables passed to the constructor in similar style
this.something = something
If more constructors are required, you have to overload them and repeat yourself over and over. Like in the following example.
Continue reading
Static Methods and variables in Kotlin
I presume most Java programmers write some helper static methods and most probably even have some helper class including just these. So sooner or later you will need to write static methods like this in Kotlin.
public static float getPxFromDp(Context context, float dp) { Resources r = context.getResources(); return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, r.getDisplayMetrics()); }
But you will find out you there is not anything like a static method in Kotlin. Fortunately, there are ways around this.
Continue reading
Kotlin Edu
There is a lot of ways how to learn Kotlin. Language reference, tutorials, video tutorials, online courses and much more. And now also Kotlin Edu.
Kotlin Educational Tools is Android Studio Plugin that helps you learn Kotlin by giving you small tasks. Read task description, write code and check. And if you cannot find the solution, you can click on Fill answer placeholders to get a right answer. Task description usually includes a link to Kotlin reference page, so you get right at the page with all you need to study to finish a task. It first looks like this.
Continue reading