0Pricing
Kotlin Academy · Lezione

Estensioni pratiche: helper per Context, View e String

Costruisca estensioni di utilità in stile Android per gli schemi più comuni.

Estensioni pratiche: helper per Context, View e String è una lezione Kotlin Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Kotlin Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Kotlin Academy include 4 lezioni in totale.

Estensioni nel mondo reale

Le estensioni sono particolarmente utili per i tipi del framework che non è possibile modificare: Context, View, String e raccolte. Di seguito sono riportati modelli pratici tratti direttamente da codebase Android di produzione.

Helper Context.toast

Racchiuda il prolisso Toast.makeText(...).show() in un'estensione composta da una sola riga.

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!")

Helper per le risorse di Context

Eviti i cast durante la ricerca delle risorse. Le estensioni migliorano la leggibilità e la sicurezza dei tipi.

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

Alterni View.VISIBLE e View.GONE senza codice superfluo.

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(boolean)

Un'estensione composta da una sola riga che alterna la visibilità in base a una condizione e sostituisce il codice di 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 listener per i clic più pulito: passa una lambda invece di un OnClickListener anonimo.

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

String.isValidEmail

Le estensioni di convalida specifiche del dominio su String rendono leggibile la logica di business.

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

Tronchi le stringhe lunghe con i puntini di sospensione: è un helper comune nell'interfaccia utente.

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

Metta in maiuscolo ogni parola: è un helper comune per la formattazione.

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())
}

Estensione di List: chunkedBy

Raggruppi gli elementi consecutivi in base a una chiave: è utile per le sezioni dell'interfaccia utente.

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]]
}

Helper per Activity

Renda la navigazione più breve e sicura rispetto ai tipi usando i generics reificati.

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

Eviti gli eccessi

Le estensioni aggiungono elementi allo spazio dei nomi globale. Le mantenga mirate, con visibilità limitata (private/internal) e raggruppate per dominio: un file per ogni tipo receiver è una buona soluzione.

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

Verifica rapida

Perché le estensioni sono particolarmente adatte ai tipi del framework Android come Context o View?

Riepilogo

Le estensioni sono perfette per aggiungere helper pratici ai tipi del framework (Context, View, String, List). Modelli comuni: alternanza della visibilità, listener per i clic, ricerca delle risorse, convalida e formattazione. Mantenga le estensioni mirate, con visibilità limitata e raggruppate per tipo receiver.

Domande Frequenti

La lezione «Estensioni pratiche: helper per Context, View e String» è gratuita?

Sì — il testo completo di «Estensioni pratiche: helper per Context, View e String» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Kotlin Academy, passa a CoddyKit PRO. Il corso Kotlin Academy include 4 lezioni in totale.

Cosa imparerò in «Estensioni pratiche: helper per Context, View e String»?

Costruisca estensioni di utilità in stile Android per gli schemi più comuni. Eserciti Kotlin Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Kotlin Academy?

Non è richiesta alcuna esperienza precedente. Kotlin Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Estensioni pratiche: helper per Context, View e String»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Kotlin Academy?

Sì. Ogni lezione Kotlin Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Funzioni di estensione: sintassi e regole di dispatch
  2. Proprietà di estensione ed estensioni calcolate
  3. Estensioni con ambito ed estensioni del companion
  4. Estensioni pratiche: helper per Context, View e String
← Torna a Kotlin Academy