Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.arijulianto.hutang
- import android.app.DatePickerDialog
- import android.content.Intent
- import android.graphics.drawable.ColorDrawable
- import android.os.Bundle
- import android.text.Editable
- import android.text.TextWatcher
- import android.widget.CompoundButton
- import android.widget.Toast
- import androidx.activity.result.contract.ActivityResultContracts
- import androidx.appcompat.app.AppCompatActivity
- import com.arijulianto.hutang.databinding.PiutangInputBinding
- import kotlinx.coroutines.Dispatchers
- import kotlinx.coroutines.runBlocking
- import kotlinx.coroutines.withContext
- import java.text.DecimalFormat
- import java.text.DecimalFormatSymbols
- import java.util.Calendar
- import java.util.Locale
- class PiutangInputActivity : AppCompatActivity() {
- private lateinit var binding:PiutangInputBinding
- lateinit var dataAdapter: AdapterPiutang
- var dataModel: PengutangData? = null
- private var appDb: AppDatabase? = null
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- binding = PiutangInputBinding.inflate(layoutInflater)
- val view = binding.root
- setContentView(view)
- supportActionBar?.setTitle("Input Piutang")
- supportActionBar?.setDisplayHomeAsUpEnabled(true)
- supportActionBar?.setBackgroundDrawable(ColorDrawable(getColor(R.color.primaryColorBlue)))
- supportActionBar?.setLogo(R.drawable.ic_back)
- supportActionBar?.setDisplayUseLogoEnabled(true)
- appDb = AppDatabase.getDatabase(this)
- var txtError = ""
- with(binding){
- rbWanita.setOnCheckedChangeListener(radioListener)
- rbPria.setOnCheckedChangeListener(radioListener)
- txtNama.setOnClickListener {
- val intent = Intent(baseContext,ChoosePengutang::class.java)
- startActivity(intent)
- }
- txtTanggal.setOnClickListener {
- val c = Calendar.getInstance()
- var v = txtTanggal.text.toString();
- var year = c.get(Calendar.YEAR)
- var month = c.get(Calendar.MONTH)
- var day = c.get(Calendar.DAY_OF_MONTH)
- val datePickerDialog = DatePickerDialog(
- this@PiutangInputActivity,
- { _, sYear, sMonth, sDay ->
- val dat = String.format("%d-%02d-%02d", sYear, (sMonth + 1), sDay)
- txtTanggal.setText(dat)
- },
- year,
- month,
- day
- )
- if(v.length==10){
- var ev = v.split("-")
- datePickerDialog.updateDate(ev[0].toInt(), (ev[1].toInt()-1), ev[2].toInt())
- }
- datePickerDialog.show()
- }
- txtJumlah.addTextChangedListener(object : TextWatcher {
- override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
- override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
- var input = s.toString()
- if (!input.isEmpty()) {
- input = input.replace(",", "")
- input = input.replace(".", "")
- val format = DecimalFormat("#,###,###")
- var formatted: String = format.format(input.toDouble()).replace(",", ".")
- txtJumlah.removeTextChangedListener(this)
- txtJumlah.setText(formatted)
- txtJumlah.setSelection(formatted.length)
- txtJumlah.addTextChangedListener(this)
- }
- }
- override fun afterTextChanged(s: Editable) {}
- })
- btnSimpan.setOnClickListener{
- var ok = false;
- /** Validate Input **/
- // validate Nama
- if(txtNama.text.toString().isEmpty()){
- //txtNama.error = "Wajib diisi"
- txtNama.requestFocus()
- txtError = "Nama harus diisi"
- //return@setOnClickListener
- }
- // validate Gender
- else if(!rbWanita.isChecked && !rbPria.isChecked){
- txtError = "Silahkan pilih Jenis Kelamin!"
- //return@setOnClickListener
- }
- // validate Tanggal
- else if(txtTanggal.text.toString().isEmpty()){
- //txtTanggal.error = "Pilih Tanggal"
- txtError = "Silahkan pilih Tanggal!"
- //return@setOnClickListener
- }
- // validate Jenis
- else if(optHutang.selectedItem.toString() == "Pilih Satu"){
- //val errHutang = optHutang.selectedView as TextView
- //errHutang.error = "Silahkan Pilih Satu"
- txtError = "Silahkan pilih Jenis Hutang!"
- optHutang.requestFocus()
- //return@setOnClickListener
- }
- // validate Jumlah
- else if(txtJumlah.text.toString().isEmpty()){
- //txtJumlah.error = "Wajib diisi"
- txtError = "Silahkan input Jumlah Hutang!"
- txtJumlah.requestFocus()
- //return@setOnClickListener
- }else{
- txtError = "Data berhasil disimpan";
- ok = true
- }
- var dataPiutang = Piutang(
- nama = txtNama.text.toString(),
- gender = if(rbWanita.isChecked) "Perempuan" else "Laki-laki",
- tanggal = txtTanggal.text.toString(),
- jenis = optHutang.selectedItem.toString(),
- jumlah = txtJumlah.text.toString(),
- keterangan = txtKeterangan.text.toString(),
- )
- /** Display Result **/
- // display Result
- if(txtError!="") {
- Toast.makeText(
- this@PiutangInputActivity,
- txtError,
- Toast.LENGTH_LONG
- ).show()
- }
- if(ok){
- //txtResult.setText(String.format(java.util.Locale.GERMANY, "%,d", txtJumlah.replace(".","").toLong()))
- // Tampil ke text (v1)
- /*var result = "Nama Lengkap : ${txtNama.text}"
- result += "\nJenis Kelamin : ${if(rbWanita.isChecked) "Perempuan" else "Laki-laki"}"
- result += "\nTanggal : ${txtTanggal.text}"
- result += "\nJenis Hutang : ${optHutang.selectedItem }"
- result += "\nJumlah : ${txtJumlah.text }"
- txtResult.text = result*/
- // tampil ke intent (v2)
- /*val intent = Intent(baseContext,PiutangViewActivity::class.java)
- intent.putExtra("data", dataPiutang)
- startActivity(intent)*/
- // tampil ke list view (v3)
- /*listData.add(dataPiutang)
- dataAdapter.updateData(listData)*/
- // simpan ke database (v4)
- runBlocking {
- withContext(Dispatchers.IO) {
- appDb?.piutangDao()?.insert(dataPiutang)
- }
- }
- finish()
- }
- }
- }
- val intentData = intent.extras
- if(intentData != null){
- val user : PengutangData = intentData.getParcelable("user") ?: PengutangData()
- bindData(user)
- }
- }
- val startForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()){ result ->
- if(result.resultCode == RESULT_OK){
- val bundle = result.data
- val user : PengutangData = bundle?.getParcelableExtra("user") ?: PengutangData()
- bindData(user)
- }
- }
- fun bindData(data: PengutangData){
- with(binding){
- txtIdUser.setText(dataModel?.iduser.toString())
- txtNama.setText(data?.nama)
- if (data?.gender == "L") {
- rbPria.isChecked = true
- } else if (data?.gender == "P") {
- rbWanita.isChecked = true
- }
- }
- }
- private val radioListener = CompoundButton.OnCheckedChangeListener{ rb, isChecked ->
- if(isChecked){
- if(rb.id == R.id.rbWanita){
- binding.rbPria.isChecked = false
- }else if(rb.id == R.id.rbPria){
- binding.rbWanita.isChecked = false
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement