Kotlin-Snippets
Alle Snippets für Kotlin — copy-&-paste-fertig, erklärt und aus der Praxis.
Listen umformen in Kotlin – map, filter, groupBy und associateBy
Statt Schleifen mit Zwischenlisten formst du Daten in Kotlin deklarativ um: map wandelt, filter siebt, groupBy bündelt, associateBy baut ein Nachschlage-Map. Ich zeige die vier an einem kleinen Beispiel.
Null-Sicherheit in Kotlin – ?., ?: und warum du !! meiden solltest
Kotlins Typsystem trennt nullbare von nicht-nullbaren Werten – die NullPointerException wird damit fast unmöglich. Ich zeige dir die drei Operatoren, die du täglich brauchst, und die eine Falle namens !!.
Extension Functions in Kotlin – bestehende Klassen erweitern, ohne sie zu ändern
Mit Extension Functions hängst du eigene Methoden an fremde Klassen wie String oder View – ganz ohne Vererbung. Ich zeige dir, wie das geht, wo es glänzt und welche Grenze du kennen solltest.
Scope-Funktionen in Kotlin – let, apply, run, also und with richtig einsetzen
let, apply, run, also, with – fünf kleine Helfer, die Kotlin-Code kürzer und lesbarer machen. Ich zeige dir mit einem einfachen Merksatz, welche du wann nimmst, ohne dass es kryptisch wird.
Einstellungen speichern mit DataStore – der moderne Ersatz für SharedPreferences
SharedPreferences ist alt, blockiert den Main-Thread und kennt keine Coroutinen. DataStore macht dasselbe – nur asynchron, typsicher und als Flow. So speicherst du Nutzer-Einstellungen richtig.
Parallele Netzwerkaufrufe mit async/await – zwei Requests, halbe Wartezeit
Wenn ein Screen zwei unabhängige Daten braucht, musst du nicht erst auf den einen und dann auf den anderen Request warten. Mit async und coroutineScope laufen sie parallel – strukturiert und sicher.
Mehrere Flows mit combine() verbinden – Live-Validierung ohne Wirrwarr
Wenn ein Ergebnis von mehreren sich ändernden Werten abhängt – z. B. ob ein Formular abgeschickt werden darf – verbindest du die Flows mit combine(). Das reagiert automatisch, sobald sich irgendeiner ändert.
DisposableEffect in Compose – aufräumen, wenn ein Composable verschwindet
Immer wenn du in Compose etwas registrierst – einen Listener, einen Sensor, einen Callback – musst du es auch wieder abmelden. Genau dafür gibt es DisposableEffect mit seinem onDispose-Block.
Room-Datenbank in Kotlin – Entity, DAO und Database in unter 30 Zeilen
Daten lokal auf dem Gerät speichern, ohne selbst SQL-Strings zusammenzubauen: Room ist die empfohlene Persistenz-Bibliothek für Android. Die drei Bausteine – Entity, DAO und Database – und wie sie zusammenspielen.
Google Gemini in einer Android-App (Kotlin, über dein eigenes Backend)
Ein KI-Feature in eine Kotlin-App bringen – mit Google Gemini. Warum der API-Key nie in die App gehört, wie der generateContent-Aufruf aussieht und wie du ihn sauber aus einer Coroutine startest.
collectAsStateWithLifecycle – Flows sammeln, ohne im Hintergrund zu verschwenden
collectAsState sammelt einen Flow auch, wenn die App im Hintergrund ist. collectAsStateWithLifecycle stoppt automatisch, sobald der Screen nicht mehr sichtbar ist – der richtige Standard für UI-State aus dem ViewModel.
derivedStateOf – abgeleiteten Zustand berechnen, ohne Recompositions zu verschwenden
Wenn du aus einem sich schnell ändernden State einen selten wechselnden Wert ableitest (z. B. "Nach-oben-Button ab Item 5"), verhindert derivedStateOf, dass dein UI bei jedem Scroll-Pixel neu zeichnet.