Pertemuan 6 - Money Converter
Nama : Aditya Rizki Muhammad
NRP : 5025221272
Github : arizki787/pertemuan_6_ppb
Kode ini merupakan aplikasi Android sederhana untuk konversi mata uang menggunakan Kotlin. Fitur utamanya adalah pengguna dapat memasukkan jumlah uang, memilih mata uang asal dan tujuan dari dua Spinner, lalu menekan tombol untuk menghitung hasil konversi berdasarkan nilai tukar yang telah ditentukan dalam conversionRates. Nilai tukar antar mata uang disimpan dalam bentuk Map, seperti pada blok berikut:
private val conversionRates = mapOf(
"USD" to mapOf("IDR" to 16833.10, "EUR" to 0.807, "GBP" to 0.719, "JPY" to 150.85, "SGD" to 1.32),
"IDR" to mapOf("USD" to 0.0000594, "EUR" to 0.0000479, "GBP" to 0.0000427, "JPY" to 0.00896, "SGD" to 0.0000784),
"EUR" to mapOf("USD" to 1.24, "IDR" to 20860.35, "GBP" to 0.891, "JPY" to 187.00, "SGD" to 1.64),
"GBP" to mapOf("USD" to 1.39, "IDR" to 23400.14, "EUR" to 1.12, "JPY" to 209.80, "SGD" to 1.84),
"JPY" to mapOf("USD" to 0.00663, "IDR" to 111.62, "EUR" to 0.00535, "GBP" to 0.00477, "SGD" to 0.00875),
"SGD" to mapOf("USD" to 0.758, "IDR" to 12752.35, "EUR" to 0.610, "GBP" to 0.544, "JPY" to 114.28)
)
Saat tombol diklik, aplikasi mengambil input jumlah uang dan mata uang asal/tujuan dari spinner dan field input, lalu menghitung nilai konversinya. Jika pengguna memasukkan jumlah yang valid dan memilih dua mata uang berbeda, hasil konversi akan ditampilkan menggunakan TextView. Proses ini terdapat pada blok berikut:
convertBtn.setOnClickListener {
val from = fromSpinner.selectedItem.toString()
val to = toSpinner.selectedItem.toString()
val amount = amountInput.text.toString().toDoubleOrNull()
if (amount == null) {
resultText.setText(R.string.enter_valid_amount)
} else if (from == to) {
resultText.text = getString(R.string.same_currency, amount.toString(), to)
} else {
val rate = conversionRates[from]?.get(to)
if (rate != null) {
val converted = amount * rate
resultText.text = getString(R.string.converted_amount, converted, to)
} else {
resultText.setText(R.string.conversion_unavailable)
}
}
}