Praktikum Android Semester 7: Part 1
Praktikum Android Semester 7: Part 2
Praktikum Android Semester 7: Part 3
Praktikum Android Semester 7: Part 4
Praktikum Android Semester 7: Part 5
Praktikum Android Semester 7: Part 6
Praktikum Android Semester 7: Part 7

Pada Praktikum Android Semester 7: Part 5 aplikasi sudah mampu menyimpan data dengan method POST, tapi recyclerview belum direfresh secara otomatis. Selain itu activity JenisbarangPost hanya bisa menyimpan untuk proses simpan tambah data, sedangkan nantinya akan digunakan juga untuk proses simpan ubah data, sehingga perlu dipisahkan fungsinya.

Agar bisa direfresh dengan baik maka method getListJenisbarang() pada JenisbarangActivity perlu ditambahkan method list.clear() sebelum list.addAll(it.data)

private fun getListJenisbarang() {
    viewModel.getJenisbarang()
    viewModel.response.observe(this, {
        binding.progressBarJenisbarang.visibility = View.INVISIBLE
        list.clear()
        list.addAll(it.data)
        binding.rvJenisbarang.layoutManager = LinearLayoutManager(this)
        val listJenisbarangAdapter = ListJenisbarangAdapter(list)
        binding.rvJenisbarang.adapter = listJenisbarangAdapter
    })
}

Berikutnya, karena onActivityResult sudah deprecated, maka kita gunakan penggantinya dengan menggunakan ActivityResultContracts. Tambahkan perintah berikut pada JenisbarangActivity

private val getContract = registerForActivityResult(ActivityResultContracts.StartActivityForResult()){
    if(it.resultCode == RESULT_OK) {
        getListJenisbarang()
    }
}

pada btTambahJenisbarang.setOnClickListener yang berfungsi untuk memanggil JenisbarangPostActivity ditambahkan extra STATUS yang berisikan TAMBAH dan startActivity diganti dengan getContract.launch(intent)

binding.btTambahJenisbarang.setOnClickListener{
    val intent = Intent(this, JenisbarangPostActivity::class.java)
    intent.putExtra("STATUS","TAMBAH")
    getContract.launch(intent)
}

Pada JenisbarangPostActivity ditambahkan perintah untuk mengambil extra status, dan dengan extra tersebut bisa ditentukan jika statusnya adalah TAMBAH daha maka, id disembunyikan, sedangkan lainnya bisa dimunculkan

val status = intent.getStringExtra("STATUS")
if(status=="TAMBAH"){
    binding.etIdJenisbarang.visibility  = View.GONE
} else {
    binding.etIdJenisbarang.visibility  = View.VISIBLE
}
binding.etNamajenisbarang.requestFocus()

Pada btSimpanJenisbarangPost.setOnClickListener dibuat percabangan untuk memilah kapan dilakukan simpan TAMBAH dan kapan dilakukan simpan UBAH, ditambahkan juga setResult(RESULT_OK) untuk memberitahu activity JenisbarangActivity bahwa simpan data berhasil dilakukan. Perintah finish() juga ditambahkan agar JenisbarangPostActivity ditutup setelah simpan data berhasil dilakukan.

binding.btSimpanJenisbarangPost.setOnClickListener{

    val idJenisbarang = binding.etIdJenisbarang.text.toString()
    val namaJenisBarang = binding.etNamajenisbarang.text.toString()
    val jenisBarangData = JenisbarangData(idJenisbarang,namaJenisBarang)

    binding.progressBarJenisbarangPost.visibility = View.VISIBLE
    binding.btSimpanJenisbarangPost.visibility = View.INVISIBLE

    if(status == "TAMBAH"){
        viewModel.create(jenisBarangData)
        viewModel.createResponse.observe(this,{
            binding.progressBarJenisbarangPost.visibility = View.INVISIBLE
            binding.btSimpanJenisbarangPost.visibility = View.VISIBLE
            Toast.makeText(this, it.body()?.message,Toast.LENGTH_SHORT).show()
            setResult(RESULT_OK)
            finish()
        })
    }
}

Praktikum Android Semester 7: Part 1
Praktikum Android Semester 7: Part 2
Praktikum Android Semester 7: Part 3
Praktikum Android Semester 7: Part 4
Praktikum Android Semester 7: Part 5
Praktikum Android Semester 7: Part 6
Praktikum Android Semester 7: Part 7