
Bukalah file UserDao.kt lalu masukkan kode berikut ini:
@Update suspend fun updateUser(user:User)
Buatlah sebuah blank fragment dengan nama EditFragment dengan file xml bernama fragment_edit.xml
Copy semua kode dari file activity_main.xml ke dalam file fragment_edit.xml dan letakkan didalam tag FrameLayout
Rubahlah isi dari variabel read-only ARGA_PARAM1 menjadi seperti berikut ini:
private const val ARG_PARAM1 = "idMurid"
Masukanlah kode berikut ini:
vm = ViewModelProvider(this).get(viewModelTampilData::class.java)
Keterangan:
Buatlah metode onViewCreated seperti berikut ini:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
}
Keterangan:
Masukkan kode berikut ini ke dalam metode onViewCreated:
val edtNama: EditText = view.findViewById<EditText>(R.id.edtNama);
val edtTglLahir: EditText = view.findViewById<EditText>(R.id.edtTglLahir);
val rbLaki : RadioButton = view.findViewById<RadioButton>(R.id.rbLaki);
val rbCewek : RadioButton = view.findViewById<RadioButton>(R.id.rbCewek);
val rgJkel = view.findViewById<RadioGroup>(R.id.rgJkel);
val spAgama : Spinner = view.findViewById(R.id.spAgama)
val chkHobby1 : CheckBox = view.findViewById<CheckBox>(R.id.chkHobby1)
val chkHobby2 : CheckBox = view.findViewById<CheckBox>(R.id.chkHobby2)
val chkHobby3 : CheckBox = view.findViewById<CheckBox>(R.id.chkHobby3)
val agama = resources.getStringArray(R.array.agama)
val adapter = ArrayAdapter(
requireContext(),
android.R.layout.simple_spinner_item, agama
)
spAgama.adapter = adapter
var agamaTerpilih = ""
spAgama.onItemSelectedListener = object : AdapterView.OnItemSelectedListener{
override fun onItemSelected(
parent: AdapterView<*>?,
view: View?,
position: Int,
id: Long
) {
agamaTerpilih = agama[position]
Toast.makeText(requireContext(), "Agama yg dipilih : $agamaTerpilih", Toast.LENGTH_LONG).show()
}
override fun onNothingSelected(parent: AdapterView<*>?) {
TODO("Not yet implemented")
}
}
val tombolSimpan = view.findViewById<Button>(R.id.btSimpan);
Keterangan:
Tambahkan kode berikut ini ke metode onViewCreated:
lifecycleScope.launch {
val dataUser = vm.userDao.ambilSatu(param1!!.toInt())
edtNama.setText(dataUser?.nama)
edtTglLahir.setText(dataUser?.tgl_lahir)
if(dataUser?.jenis_kelamin=="Laki-laki"){
rbLaki.isChecked = true
}else{
rbCewek.isChecked = true
}
for (i in agama.indices) {
if(agama[i] == dataUser?.agama){
spAgama.setSelection(i)
}
}
val arrData :Array<String> = dataUser?.hobi!!.split(",").toTypedArray()
for(elemen in arrData){
if(elemen.trim() == "Sepakbola")
chkHobby1.isChecked = true
if(elemen.trim() == "Main Game Online")
chkHobby2.isChecked = true
if(elemen.trim() == "Basket")
chkHobby3.isChecked = true
}
}
Tambahkan kode berikut ini ke dalam metode onViewCreated:
tombolSimpan.setOnClickListener {
val nama:String = edtNama.text.toString();
val tglLahir = edtTglLahir.text.toString();
val idRbTerpilih = rgJkel.checkedRadioButtonId;
val rbJkel = view.findViewById<RadioButton>(idRbTerpilih);
val jKel = rbJkel.text
var hobi = ""
if(chkHobby1.isChecked)
hobi+= chkHobby1.text.toString()
if(chkHobby2.isChecked) {
if(hobi.length==0)
hobi += chkHobby2.text.toString()
else
hobi += ", "+ chkHobby2.text.toString()
}
if(chkHobby3.isChecked){
if(hobi.length==0)
hobi += chkHobby3.text.toString()
else
hobi+=", "+chkHobby3.text.toString()
}
val tblUser = User(
id = param1!!.toInt(),
nama = nama,
tgl_lahir = tglLahir,
jenis_kelamin = jKel.toString(),
agama = agamaTerpilih,
hobi = hobi
)
lifecycleScope.launch(Dispatchers.IO) {
vm.userDao.updateUser(tblUser)
}
Toast.makeText(requireContext(), " Halo $nama, \n kamu lahir tanggal : $tglLahir, \n jenis kelaminmu : $jKel, \n Hobimu : $hobi", Toast.LENGTH_LONG).show();
}
Keterangan:
Bukalah file SecondFragment.kt lalu buatlah metode bikinTombolEdit seperti berikut ini:
fun bikinTombolEdit(teks:String, id: Int, indeks: Int){
val tombol = Button(activity).apply {
text = "Edit "+teks
layoutParams = FrameLayout.LayoutParams(
FrameLayout.LayoutParams.WRAP_CONTENT,
FrameLayout.LayoutParams.WRAP_CONTENT
)
}
val params = tombol.layoutParams as ViewGroup.MarginLayoutParams
if(indeks==0)
params.marginStart =5
else
params.marginStart +=200
params.topMargin = 150
tombol.layoutParams = params
wadah.addView(tombol)
tombol.setOnClickListener {
val paket = Bundle()
paket.putString("idMurid","$id")
val fragmentEdit = EditFragment()
fragmentEdit.arguments=paket
parentFragmentManager.commit {
setReorderingAllowed(true)
replace(R.id.isiFragment,fragmentEdit )
}
}
}
Dalam metode onViewCreated maka panggillah metode bikinTombolEdit seperti berikut ini:
bikinTombolEdit(orang.nama, orang.id, indeks)
Pilih virtual devicemu lalu tekan tombol Play