Kotlin Academy · Pelajaran

Ekstensi Praktis: Pembantu Context, View, dan String

Bangun ekstensi utilitas bergaya Android untuk pola-pola umum.

Pelajaran 4 dari 414 langkah

Ekstensi Praktis: Pembantu Context, View, dan String adalah pelajaran Kotlin Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Kotlin Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Kotlin Academy mencakup 4 pelajaran total.

Ekstensi di Dunia Nyata

Ekstensi sangat berguna pada tipe kerangka kerja yang tidak dapat Anda ubah: Context, View, String, dan koleksi. Berikut beberapa pola praktis yang langsung diambil dari basis kode Android produksi.

Pembantu Context.toast

Bungkus Toast.makeText(...).show() yang panjang menjadi ekstensi satu baris.

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

Pembantu Resource Context

Hindari konversi tipe saat mencari resource. Ekstensi meningkatkan keterbacaan dan keamanan tipe.

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

Alihkan View.VISIBLE / View.GONE tanpa kode yang bertele-tele.

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)

Fungsi satu baris yang mengalihkan visibilitas berdasarkan suatu kondisi—menggantikan kode visibilitas 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

Pendengar klik yang lebih bersih—meneruskan lambda, bukan OnClickListener anonim.

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

String.isValidEmail

Ekstensi validasi khusus domain pada String membuat logika bisnis lebih mudah dibaca.

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

Potong string panjang dengan elipsis—pembantu antarmuka pengguna yang umum.

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

Kapitalisasikan setiap kata—pembantu pemformatan yang umum.

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

Ekstensi Daftar: chunkedBy

Kelompokkan elemen berurutan berdasarkan suatu kunci—berguna untuk bagian-bagian antarmuka pengguna.

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

Pembantu Aktivitas

Buat navigasi menjadi aman terhadap tipe dan lebih singkat dengan generik yang direifikasi.

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

Jangan Berlebihan

Ekstensi menambahkan sesuatu ke ruang nama global. Jagalah agar tetap terfokus, memiliki cakupan yang jelas (private/internal), dan dikelompokkan berdasarkan domain (satu berkas per tipe penerima biasanya berfungsi baik).

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

Pemeriksaan Cepat

Mengapa ekstensi sangat cocok untuk tipe kerangka kerja Android seperti Context atau View?

Ringkasan

Ekstensi sangat cocok untuk menambahkan pembantu ergonomis pada tipe kerangka kerja (Context, View, teks, daftar). Pola yang umum meliputi pengalihan visibilitas, pendengar klik, pencarian resource, validasi, dan pemformatan. Jagalah agar ekstensi tetap terfokus, memiliki cakupan yang jelas, dan dikelompokkan berdasarkan tipe penerima.

Gratis untuk memulai

Belajar Kotlin dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
51
Pelajaran
203

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Ekstensi Praktis: Pembantu Context, View, dan String” gratis?

Ya — teks lengkap “Ekstensi Praktis: Pembantu Context, View, dan String” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Kotlin Academy, upgrade ke CoddyKit PRO. Kursus Kotlin Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Ekstensi Praktis: Pembantu Context, View, dan String”?

Bangun ekstensi utilitas bergaya Android untuk pola-pola umum. Kamu berlatih Kotlin Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Kotlin Academy?

Tidak diperlukan pengalaman sebelumnya. Kotlin Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Ekstensi Praktis: Pembantu Context, View, dan String” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Kotlin Academy ini?

Ya. Setiap pelajaran Kotlin Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Fungsi Ekstensi: Sintaks dan Aturan Dispatch
  2. Properti Ekstensi dan Ekstensi Terhitung
  3. Ekstensi Terbatas dan Ekstensi Companion
  4. Ekstensi Praktis: Pembantu Context, View, dan String
← Kembali ke Kotlin Academy