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