Ekstensi Praktis: Pembantu Context, View, dan String
Bangun ekstensi utilitas bergaya Android untuk pola-pola umum.
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.
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
- Fungsi Ekstensi: Sintaks dan Aturan Dispatch
- Properti Ekstensi dan Ekstensi Terhitung
- Ekstensi Terbatas dan Ekstensi Companion
- Ekstensi Praktis: Pembantu Context, View, dan String