Selasa, 14 Oktober 2025

cara membuat aplikasi input data siswa menggunakan Kotlin di Android Studio

Membuat aplikasi input data siswa menggunakan Kotlin di Android Studio

Fitur yang Akan Dibuat

  1. Form input data siswa (EditText + Button “Simpan”).
  2. Menyimpan data ke database SQLite (local database).
  3. Menampilkan data siswa dalam daftar (RecyclerView).
  4. (Opsional) Fitur hapus dan edit data.

 

Fitur yang Akan Dibuat

Pastikan kamu sudah:

1.      Menginstal Android Studio (versi terbaru).

2.      Minimum SDK: Android 6.0 (API 23) atau lebih tinggi.

3.      Memilih project baru dengan Empty Activity.

4.      Bahasa: Kotlin

 

1.     Struktur Project 

app/
 
─ java/com.example.datasiswa/
 │   
─ MainActivity.kt
 │   
─ AddStudentActivity.kt
 │   
─ DatabaseHelper.kt
 │   
─ Student.kt
 │   └─ StudentAdapter.kt
 └─ res/
     
─ layout/
     │   
─ activity_main.xml
     │   
─ activity_add_student.xml
     │   └─ item_student.xml

 

    1.  

2.     Buat Model Data Student.kt

package com.example.datasiswa

data class Student(
    val id: Int = 0,
    val nis: String,
    val nama: String,
    val kelas: String,
    val jurusan: String
)

 

3.     Buat Database Helper DatabaseHelper.kt

 

package com.example.datasiswa

import android.content.ContentValues
import android.content.Context
import android.database.sqlite.SQLiteDatabase
import android.database.sqlite.SQLiteOpenHelper

class DatabaseHelper(context: Context) :
    SQLiteOpenHelper(context, "db_siswa", null, 1) {

    override fun onCreate(db: SQLiteDatabase) {
        db.execSQL(
            "CREATE TABLE siswa (" +
                    "id INTEGER PRIMARY KEY AUTOINCREMENT, " +
                    "nis TEXT, nama TEXT, kelas TEXT, jurusan TEXT)"
        )
    }

    override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
        db.execSQL("DROP TABLE IF EXISTS siswa")
        onCreate(db)
    }

    fun insertStudent(student: Student): Long {
        val db = writableDatabase
        val values = ContentValues().apply {
            put("nis", student.nis)
            put("nama", student.nama)
            put("kelas", student.kelas)
            put("jurusan", student.jurusan)
        }
        return db.insert("siswa", null, values)
    }

    fun getAllStudents(): List<Student> {
        val db = readableDatabase
        val cursor = db.rawQuery("SELECT * FROM siswa", null)
        val students = mutableListOf<Student>()
        if (cursor.moveToFirst()) {
            do {
                val student = Student(
                    id = cursor.getInt(0),
                    nis = cursor.getString(1),
                    nama = cursor.getString(2),
                    kelas = cursor.getString(3),
                    jurusan = cursor.getString(4)
                )
                students.add(student)
            } while (cursor.moveToNext())
        }
        cursor.close()
        return students
    }
}
 

4.     Layout Input Data activity_add_student.xml

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:padding="16dp"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <EditText
        android:id="@+id/inputNIS"
        android:hint="NIS"
        android:inputType="number"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <EditText
        android:id="@+id/inputNama"
        android:hint="Nama Siswa"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <EditText
        android:id="@+id/inputKelas"
        android:hint="Kelas"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <EditText
        android:id="@+id/inputJurusan"
        android:hint="Jurusan"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/btnSimpan"
        android:text="Simpan Data"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>
 

5.     Activity Input AddStudentActivity.kt

 

package com.example.datasiswa

import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_add_student.*

class AddStudentActivity : AppCompatActivity() {

    private lateinit var db: DatabaseHelper

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_add_student)

        db = DatabaseHelper(this)

        btnSimpan.setOnClickListener {
            val nis = inputNIS.text.toString()
            val nama = inputNama.text.toString()
            val kelas = inputKelas.text.toString()
            val jurusan = inputJurusan.text.toString()

            if (nis.isNotEmpty() && nama.isNotEmpty() && kelas.isNotEmpty() && jurusan.isNotEmpty()) {
                val student = Student(nis = nis, nama = nama, kelas = kelas, jurusan = jurusan)
                db.insertStudent(student)
                Toast.makeText(this, "Data Tersimpan", Toast.LENGTH_SHORT).show()
                finish()
            } else {
                Toast.makeText(this, "Lengkapi semua field!", Toast.LENGTH_SHORT).show()
            }
        }
    }
}

 

6.     Layout List Siswa item_student.xml

   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:padding="10dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#f1f1f1"
    android:layout_marginBottom="8dp">

    <TextView
        android:id="@+id/txtNama"
        android:textStyle="bold"
        android:textSize="18sp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <TextView android:id="@+id/txtNIS"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView android:id="@+id/txtKelas"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView android:id="@+id/txtJurusan"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

 

7.     Adapter untuk RecyclerView StudentAdapter.kt

 

package com.example.datasiswa

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView

class StudentAdapter(private val list: List<Student>) :
    RecyclerView.Adapter<StudentAdapter.StudentViewHolder>() {

    class StudentViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        val txtNama: TextView = itemView.findViewById(R.id.txtNama)
        val txtNIS: TextView = itemView.findViewById(R.id.txtNIS)
        val txtKelas: TextView = itemView.findViewById(R.id.txtKelas)
        val txtJurusan: TextView = itemView.findViewById(R.id.txtJurusan)
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): StudentViewHolder {
        val view = LayoutInflater.from(parent.context)
            .inflate(R.layout.item_student, parent, false)
        return StudentViewHolder(view)
    }

    override fun onBindViewHolder(holder: StudentViewHolder, position: Int) {
        val student = list[position]
        holder.txtNama.text = student.nama
        holder.txtNIS.text = "NIS: ${student.nis}"
        holder.txtKelas.text = "Kelas: ${student.kelas}"
        holder.txtJurusan.text = "Jurusan: ${student.jurusan}"
    }

    override fun getItemCount(): Int = list.size
}
 

8.     Main Activity activity_main.xml

 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:padding="16dp"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_above="@+id/btnTambah"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <Button
        android:id="@+id/btnTambah"
        android:text="Tambah Siswa"
        android:layout_alignParentBottom="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</RelativeLayout>
 

9.     MainActivity.kt

package com.example.datasiswa

import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {

    private lateinit var db: DatabaseHelper

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        db = DatabaseHelper(this)

        btnTambah.setOnClickListener {
            startActivity(Intent(this, AddStudentActivity::class.java))
        }
    }

    override fun onResume() {
        super.onResume()
        val list = db.getAllStudents()
        recyclerView.layoutManager = LinearLayoutManager(this)
        recyclerView.adapter = StudentAdapter(list)
    }
}
 

10.  Jalankan Aplikasi

  1. Jalankan di emulator atau perangkat fisik Android.
  2. Tekan Tambah Siswa, isi data, lalu Simpan.
  3. Data akan muncul di daftar.

0 komentar

Posting Komentar