Dalam pengembangan aplikasi Android, sering kali diperlukan fitur untuk mengubah data yang sudah ada, seperti data mahasiswa. Artikel ini akan membahas langkah-langkah lengkap untuk mengimplementasikan fitur ini menggunakan Kotlin dan database SQL di Android.
![](https://asmanhaikal.com/wp-content/uploads/2024/02/Screenshot-2024-02-17-180547-1024x576.png)
Langkah 1: Membuat Adapter RecyclerView
Kita akan menggunakan adapter RecyclerView untuk menampilkan daftar mahasiswa dan memberikan tombol untuk mengubah data.
Mahasiswa_Item.kt
// Mahasiswa_Item.kt
class Mahasiswa_Item(
val ini: Context,
val id_mahasiswa: MutableList<String>,
val nama: MutableList<String>,
val nim: MutableList<String>,
val foto: MutableList<Int>
) : RecyclerView.Adapter<Mahasiswa_Item.ViewHolder>() {
// ViewHolder untuk menyimpan elemen tampilan setiap item RecyclerView
class ViewHolder(ItemView: View) : RecyclerView.ViewHolder(ItemView){
val txt_nama:TextView = ItemView.findViewById(R.id.txt_nama)
val txt_nim:TextView = ItemView.findViewById(R.id.txt_nim)
val iv_foto:ImageView = ItemView.findViewById(R.id.iv_foto)
val btn_hapus:Button = ItemView.findViewById(R.id.btn_hapus)
val btn_ubah:Button = ItemView.findViewById(R.id.btn_ubah)
}
// Metode onCreateViewHolder untuk membuat ViewHolder baru
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Mahasiswa_Item.ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.mahasiswa_item, parent, false)
return ViewHolder(view)
}
// Metode getItemCount untuk mendapatkan jumlah item dalam dataset
override fun getItemCount(): Int {
return nama.size
}
// Metode onBindViewHolder untuk mengikat data ke ViewHolder di posisi yang ditentukan dalam RecyclerView
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.txt_nama.text = nama[position]
holder.txt_nim.text = nim[position]
holder.iv_foto.setImageResource(foto[position])
// Tambahkan OnClickListener untuk tombol ubah
holder.btn_ubah.setOnClickListener {
val id_mahasiswa_terpilih = id_mahasiswa[position]
val intent = Intent(ini, Mahasiswa_Ubah::class.java)
intent.putExtra("id_mahasiswa_terpilih", id_mahasiswa_terpilih)
ini.startActivity(intent)
}
}
}
mahasiswa_item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
android:layout_margin="5dp">
<ImageView
android:id="@+id/iv_foto"
android:layout_width="200dp"
android:layout_height="200dp"
android:src="@drawable/noimage"
android:scaleType="centerCrop"></ImageView>
<TextView
android:id="@+id/txt_nim"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="NIM Mahasiswa"
android:textSize="18sp"
android:textColor="#333333"
android:layout_marginBottom="5dp"></TextView>
<TextView
android:id="@+id/txt_nama"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Nama Mahasiswa"
android:textSize="16sp"
android:textColor="#333333"
android:layout_marginBottom="5dp"></TextView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="5dp"
android:gravity="center">
<Button
android:id="@+id/btn_hapus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hapus"
android:layout_marginRight="5dp"></Button>
<Button
android:id="@+id/btn_ubah"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="5dp"
android:text="Ubah"></Button>
</LinearLayout>
</LinearLayout>
Langkah 2: Mengubah Data Mahasiswa
Di Activity Mahasiswa_Ubah.kt
, kita akan mengizinkan pengguna untuk mengubah data mahasiswa yang dipilih.
Mahasiswa_Ubah.kt
// Mahasiswa_Ubah.kt
class Mahasiswa_Ubah : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.mahasiswa_ubah)
// Dapatkan id_mahasiswa_terpilih dari intent
val id_mahasiswa_terpilih:String = intent.getStringExtra("id_mahasiswa_terpilih").toString()
// Hubungkan ke database
val dbkampus: SQLiteDatabase = openOrCreateDatabase("kampus", MODE_PRIVATE, null)
// Ambil data mahasiswa berdasarkan id_mahasiswa_terpilih
val ambil:Cursor = dbkampus.rawQuery("SELECT * FROM mahasiswa WHERE id_mahasiswa='$id_mahasiswa_terpilih'", null )
// Pastikan kursor berada pada posisi yang valid
if(ambil.moveToFirst()){
// Ambil data dari cursor
val isi_nim:String = ambil.getString(1)
val isi_nama:String = ambil.getString(2)
val edt_nim:EditText = findViewById(R.id.edt_nim)
val edt_nama:EditText = findViewById(R.id.edt_nama)
val btn_simpan:Button = findViewById(R.id.btn_simpan)
// Isi data ke EditText
edt_nim.setText(isi_nim)
edt_nama.setText(isi_nama)
// Tambahkan OnClickListener untuk tombol simpan
btn_simpan.setOnClickListener {
val nim_baru:String = edt_nim.text.toString()
val nama_baru:String = edt_nama.text.toString()
// Update data mahasiswa ke database
val ngubah = dbkampus.rawQuery("UPDATE mahasiswa SET nim_mahasiswa='$nim_baru', nama_mahasiswa='$nama_baru' WHERE id_mahasiswa='$id_mahasiswa_terpilih'", null)
ngubah.moveToNext()
// Kembalikan ke Activity Mahasiswa setelah mengubah data
val pindah:Intent = Intent(this, Mahasiswa::class.java)
startActivity(pindah)
}
} else {
Log.d("Mahasiswa", "Maaf, terjadi kesalahan haikal")
}
}
}
mahasiswa_ubah.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="20dp"
tools:context=".Mahasiswa_Ubah">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Ubah Mahasiswa"
android:textSize="20sp"
android:layout_marginBottom="20dp"
android:layout_gravity="center_horizontal"></TextView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:text="NIM Mahasiswa"></TextView>
<EditText
android:id="@+id/edt_nim"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:hint="Masukkan NIM"></EditText>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:text="Nama Mahasiswa"></TextView>
<EditText
android:id="@+id/edt_nama"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="30dp"
android:hint="Masukkan Nama"></EditText>
<Button
android:id="@+id/btn_simpan"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="SIMPAN"></Button>
</LinearLayout>
Langkah 3: Menampilkan Data Mahasiswa
Di Activity Mahasiswa.kt
, kita akan menampilkan daftar mahasiswa terupdate.
package com.android.kampus
import android.content.Intent
import android.database.sqlite.SQLiteDatabase
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.LinearLayout
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
class Mahasiswa : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.mahasiswa)
val rv_mahasiswa:RecyclerView = findViewById(R.id.rv_mahasiswa)
val id_mahasiswa:MutableList<String> = mutableListOf()
val nama:MutableList<String> = mutableListOf()
val nim:MutableList<String> = mutableListOf()
val foto:MutableList<Int> = mutableListOf()
//panggil database kampus
val dbkampus:SQLiteDatabase = openOrCreateDatabase("kampus", MODE_PRIVATE, null)
//gali data mahasiswa
val gali_mahasiswa = dbkampus.rawQuery("SELECT * FROM mahasiswa", null)
while (gali_mahasiswa.moveToNext())
{
id_mahasiswa.add(gali_mahasiswa.getString(0))
nama.add(gali_mahasiswa.getString(1))
nim.add(gali_mahasiswa.getString(2))
foto.add(R.drawable.noimage)
}
val mi = Mahasiswa_Item(this, id_mahasiswa, nama, nim, foto)
rv_mahasiswa.adapter = mi
rv_mahasiswa.layoutManager = GridLayoutManager (this, 2)
//btn_tambah
val btn_tambah:Button = findViewById(R.id.btn_tambah)
btn_tambah.setOnClickListener {
val pindah:Intent = Intent(this, Mahasiswa_Tambah::class.java)
startActivity(pindah)
}
}
}
mahasiswa.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
tools:context=".Mahasiswa"
android:padding="10dp">
<Button
android:id="@+id/btn_tambah"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Tambah Mahasiswa"
android:layout_margin="10dp"></Button>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_mahasiswa"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:listitem="@layout/mahasiswa_item"></androidx.recyclerview.widget.RecyclerView>
</LinearLayout>
Dengan langkah-langkah di atas, pengguna akan dapat dengan mudah mengubah data mahasiswa dalam aplikasi Android. Pastikan untuk melakukan manajemen database yang baik dan memberikan pengalaman pengguna yang baik saat menggunakan aplikasi Anda.