0Pricing
Kotlin Academy · Leçon

Extensions pratiques : utilitaires pour Context, View et String

Créez des extensions utilitaires de style Android pour les cas courants.

Extensions pratiques : utilitaires pour Context, View et String est une leçon Kotlin Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Kotlin Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Kotlin Academy comprend 4 leçons au total.

Extensions dans le monde réel

Les extensions sont très utiles pour les types de framework que vous ne pouvez pas modifier : Context, View, String et les collections. Voici des modèles pratiques directement issus de bases de code Android en production.

Utilitaire Context.toast

Encapsulez l’appel verbeux Toast.makeText(...).show() dans une extension d’une seule ligne.

import android.content.Context
import android.widget.Toast
fun Context.toast(message: String, long: Boolean = false) {
    val duration = if (long) Toast.LENGTH_LONG else Toast.LENGTH_SHORT
    Toast.makeText(this, message, duration).show()
}
// Usage: context.toast("Saved!")

Utilitaires de ressources du contexte

Évitez les conversions de type lors de la recherche de ressources. Les extensions améliorent la lisibilité et la sécurité des types.

import android.content.Context
import androidx.core.content.ContextCompat
fun Context.color(res: Int) = ContextCompat.getColor(this, res)
fun Context.string(res: Int) = getString(res)
fun Context.dp(value: Int) = (value * resources.displayMetrics.density).toInt()
// Usage: val red = context.color(R.color.error)

View.show / View.hide

Basculez entre View.VISIBLE et View.GONE sans code superflu.

import android.view.View
fun View.show() { visibility = View.VISIBLE }
fun View.hide() { visibility = View.GONE }
fun View.invisible() { visibility = View.INVISIBLE }
// Usage: progressBar.show(); button.hide()

View.setVisible(booléen)

Une seule ligne qui bascule selon une condition : elle remplace le code de visibilité if-else.

import android.view.View
fun View.setVisible(visible: Boolean) {
    visibility = if (visible) View.VISIBLE else View.GONE
}
// Usage: errorLabel.setVisible(state.hasError)

Lambda View.onClick

Un écouteur de clic plus clair : transmettez une lambda au lieu d’un OnClickListener anonyme.

import android.view.View
fun View.onClick(action: (View) -> Unit) {
    setOnClickListener(action)
}
// Usage:
// button.onClick { view -> println("clicked") }

String.isValidEmail

Les extensions de validation propres au domaine sur String rendent la logique métier lisible.

fun String.isValidEmail(): Boolean {
    val regex = Regex("^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$")
    return regex.matches(this)
}
fun main() {
    println("ada@example.com".isValidEmail()) // true
    println("nope".isValidEmail())             // false
}

String.truncate

Tronquez les chaînes longues avec une ellipse : un utilitaire d’interface courant.

fun String.truncate(max: Int, ellipsis: String = "..."): String =
    if (length <= max) this else substring(0, max - ellipsis.length) + ellipsis
fun main() {
    println("The quick brown fox".truncate(10)) // The qui...
    println("short".truncate(10))                // short
}

String.toTitleCase

Mettez chaque mot en majuscule : un utilitaire de mise en forme courant.

fun String.toTitleCase(): String = split(" ").joinToString(" ") {
    if (it.isEmpty()) it
    else it[0].uppercaseChar() + it.substring(1).lowercase()
}
fun main() {
    println("hello WORLD from kotlin".toTitleCase())
}

Extension de liste : chunkedBy

Regroupez les éléments consécutifs selon une clé : c’est utile pour les sections d’interface.

fun <T, K> List<T>.chunkedBy(keySelector: (T) -> K): List<List<T>> {
    val result = mutableListOf<MutableList<T>>()
    var lastKey: K? = null
    for (item in this) {
        val key = keySelector(item)
        if (key == lastKey) result.last().add(item)
        else { result.add(mutableListOf(item)); lastKey = key }
    }
    return result
}
fun main() {
    val data = listOf(1, 1, 2, 2, 2, 3, 1)
    println(data.chunkedBy { it }) // [[1, 1], [2, 2, 2], [3], [1]]
}

Utilitaires d’activité

Rendez la navigation plus courte et sûre du point de vue des types grâce aux génériques réifiés.

import android.content.Context
import android.content.Intent
inline fun <reified T> Context.startActivity() {
    startActivity(Intent(this, T::class.java))
}
// Usage: context.startActivity<MainActivity>()

N’en faites pas trop

Les extensions enrichissent l’espace de noms global. Gardez-les ciblées, avec une portée limitée (private/internal) et regroupées par domaine (un fichier par type de récepteur fonctionne bien).

fun String.shout() = uppercase() + "!"
fun String.whisper() = lowercase() + "..."
fun main() {
    println("hello".shout())
    println("HELLO".whisper())
}

Vérification rapide

Pourquoi les extensions conviennent-elles particulièrement aux types de framework Android comme Context ou View ?

Récapitulatif

Les extensions sont idéales pour ajouter des utilitaires ergonomiques aux types de framework (Context, View, String, List). Modèles courants : bascules de visibilité, écouteurs de clic, recherches de ressources, validation et mise en forme. Gardez les extensions ciblées, avec une portée limitée et regroupées par type de récepteur.

Questions Fréquemment Posées

La leçon « Extensions pratiques : utilitaires pour Context, View et String » est-elle gratuite ?

Oui — le texte complet de « Extensions pratiques : utilitaires pour Context, View et String » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Kotlin Academy, passe à CoddyKit PRO. Le cours Kotlin Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Extensions pratiques : utilitaires pour Context, View et String » ?

Créez des extensions utilitaires de style Android pour les cas courants. Tu pratiques Kotlin Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Kotlin Academy ?

Aucune expérience préalable n'est requise. Kotlin Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Extensions pratiques : utilitaires pour Context, View et String » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Kotlin Academy ?

Oui. Chaque leçon Kotlin Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Fonctions d’extension : syntaxe et règles de résolution
  2. Propriétés d’extension et extensions calculées
  3. Extensions limitées et extensions de companion object
  4. Extensions pratiques : utilitaires pour Context, View et String
← Retour à Kotlin Academy