0Pricing
Kotlin Academy · Lección

Extensiones prácticas: auxiliares para Context, View y String

Construya extensiones de utilidad al estilo de Android para patrones habituales.

Extensiones prácticas: auxiliares para Context, View y String es una lección gratuita de Kotlin Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Kotlin Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Kotlin Academy incluye 4 lecciones en total.

Extensiones del mundo real

Las extensiones son especialmente útiles para tipos de frameworks que no puede modificar: Context, View, String y colecciones. A continuación se muestran patrones prácticos tomados directamente de bases de código de Android en producción.

Ayudante Context.toast

Encapsule el verboso Toast.makeText(...).show() en una extensión de una sola línea.

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

Ayudantes de recursos de Context

Evite las conversiones de tipo al buscar recursos. Las extensiones mejoran la legibilidad y la seguridad de tipos.

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

Alterne entre View.VISIBLE y View.GONE sin código innecesario.

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)

Una función de una sola línea que alterna la visibilidad según una condición; sustituye al código de visibilidad con 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 de View.onClick

Un listener de clic más limpio: pasa una lambda en lugar de un OnClickListener anónimo.

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

String.isValidEmail

Las extensiones de validación específicas del dominio sobre String hacen que la lógica de negocio sea legible.

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

Trunque cadenas largas con puntos suspensivos; es un ayudante habitual para la interfaz de usuario.

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

Ponga en mayúscula cada palabra; es un ayudante habitual de formato.

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

Extensión de List: chunkedBy

Agrupe elementos consecutivos por una clave; resulta útil para las secciones de la interfaz de usuario.

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

Ayudantes para Activity

Haga que la navegación sea segura en cuanto a tipos y más concisa mediante genéricos reificados.

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

No se exceda

Las extensiones se añaden al espacio de nombres global. Manténgalas enfocadas, limite su ámbito (private/internal) y agrúpelas por dominio (un archivo por tipo receptor funciona bien).

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

Comprobación rápida

¿Por qué son tan adecuadas las extensiones para tipos de frameworks de Android como Context o View?

Resumen

Las extensiones son perfectas para añadir ayudantes ergonómicos a tipos de frameworks (Context, View, String, List). Patrones habituales: alternancia de visibilidad, listeners de clic, búsquedas de recursos, validación y formato. Mantenga las extensiones enfocadas, con un ámbito limitado y agrupadas por tipo receptor.

Preguntas frecuentes

¿La lección «Extensiones prácticas: auxiliares para Context, View y String» es gratis?

Sí — el texto completo de «Extensiones prácticas: auxiliares para Context, View y String» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Kotlin Academy, actualiza a CoddyKit PRO. El curso de Kotlin Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Extensiones prácticas: auxiliares para Context, View y String»?

Construya extensiones de utilidad al estilo de Android para patrones habituales. Practicas Kotlin Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Kotlin Academy?

No se requiere experiencia previa. Kotlin Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Extensiones prácticas: auxiliares para Context, View y String»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Kotlin Academy?

Sí. Cada lección de Kotlin Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Funciones de extensión: sintaxis y reglas de despacho
  2. Propiedades de extensión y extensiones calculadas
  3. Extensiones con alcance y extensiones de companion
  4. Extensiones prácticas: auxiliares para Context, View y String
← Volver a Kotlin Academy