ListUp: Aplikasi Catatan Daftar Kegiatan

 

EAS/Final Proyek - Pemrograman Perangkat Bergerak (D)


Disusun oleh:

Nadia Evi Nathania / 5025221063
Nerisa Afiani / 5025221064


Sebagai bentuk Evaluasi Akhir Semester, kami diberi tugas Final Proyek membuat aplikasi mobile sederhana. Saya bersama teman kelompok saya membuat aplikasi pencatatan daftar kegiatan, dengan nama "ListUp".

Deskripsi:

  • Tema

ListUp adalah aplikasi mobile berbasis Android yang berfungsi sebagai pengelola daftar tugas (to-do list) dengan fitur tambahan berupa penentuan deadline dan status penyelesaian tugas, yang mempermudah pengguna dalam mengatur jadwal dan prioritas aktivitas harian.

  • Tujuan

  1. Membantu pengguna mencatat, mengelola, dan memantau tugas-tugas mereka secara efisien.

  2. Memberikan kemudahan dalam mengatur deadline untuk setiap tugas sehingga pengguna tidak melewatkan tenggat waktu penting.

  3. Menyediakan indikator visual (checkbox) agar pengguna dapat mengetahui tugas mana yang sudah selesai dan mana yang masih perlu dikerjakan.

  4. Menyediakan fitur penyortiran berdasarkan nama, deadline, dan status untuk mempermudah navigasi daftar tugas

  5. Memberikan sistem login dan register sederhana untuk melindungi data pengguna secara lokal.

  • Target

  1. Mahasiswa atau pelajar yang membutuhkan aplikasi sederhana untuk mencatat tugas kuliah, deadline ujian, atau project.

  2. Pekerja atau profesional yang ingin mengatur pekerjaan harian atau daftar to-do pribadi.

  3. Siapa pun yang membutuhkan aplikasi to-do list ringan tanpa sistem yang kompleks atau membutuhkan koneksi internet.

  4. Pengguna Android yang lebih nyaman dengan aplikasi yang simpel, ringan, dan memiliki navigasi yang mudah dipahami.

Fitur Utama:

  • Login/register dalam aplikasi
  • Menambah tugas dengan menginputkan nama dan deadline
  • Checkbox untuk status tugas (selesai/belum)
  • Penyortiran tugas berdasarkan nama, deadline, dan status
  • Hapus tugas yang sudah selesai/tidak diperlukan

Desain:

 

Langkah Pengerjaan:

Buat Project Baru di Android Studio

Buka Android Studio → New Project
Pilih Empty Activity
Pilih Bahasa: Kotlin, dan tentukan nama project (ListUp)

Tambahkan Dependencies di build.gradle

Tambahkan berikut ke file build.gradle (Module: app):

implementation "androidx.recyclerview:recyclerview:1.3.1"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.6.2"

Tujuan: Menggunakan RecyclerView untuk daftar tugas dan ViewModel untuk manajemen data

Buat Data Class Task

Contoh kode:

data class Task(
    val id: Int,
    var name: String,
    var deadline: LocalDate,
    var isCompleted: Boolean = false
)

Tujuan: Menyimpan data tugas, termasuk nama, tanggal deadline, dan status selesai

Buat Layout XML

Edit activity_main.xml untuk membuat antarmuka input dan daftar:

<EditText android:id="@+id/editTextTask" />
<Button android:id="@+id/btnPickDate" android:text="Pilih Tanggal" />
<Button android:id="@+id/btnAddTask" android:text="Tambah Tugas" />
<Spinner android:id="@+id/spinnerSort" />
<androidx.recyclerview.widget.RecyclerView android:id="@+id/recyclerViewTasks" />

Tujuan: Memberikan tampilan bagi pengguna untuk memasukkan tugas dan melihat daftar

Buat Adapter RecyclerView (TaskAdapter)

Adapter mengelola data dan menampilkannya dalam bentuk daftar
Tambahkan fitur checkbox di item untuk mengubah status tugas
Contoh:

class TaskAdapter(...) : RecyclerView.Adapter<TaskViewHolder>() {
    // binding item layout, update status isCompleted
}

Buat ViewModel (TaskViewModel)

Gunakan LiveData agar RecyclerView otomatis update saat data berubah:
class TaskViewModel : ViewModel() {
    val taskList = MutableLiveData<MutableList<Task>>()
    fun addTask(task: Task) { ... }
    fun sortTasksBy(criteria: String) { ... }
}

Gunakan DatePickerDialog

Untuk memilih tanggal deadline dengan dialog:
val datePicker = DatePickerDialog(...)
datePicker.setOnDateSetListener { _, year, month, day ->
    val date = LocalDate.of(year, month + 1, day)
}

Tambahkan Penyortiran di Spinner

Spinner memungkinkan pemilihan cara urut:
spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
    override fun onItemSelected(...) {
        viewModel.sortTasksBy(selectedOption)
    }

}

Tambahkan Fitur Register dan Login

  • Menggunakan SharedPreferences untuk menyimpan akun.
  • Membuat 2 Activity: LoginActivity (form login) dan RegisterActivity (form register).
  • Di AndroidManifest.xml, mengatur LoginActivity menjadi halaman pertama.

Simpan Banyak Akun dengan SharedPreferences

Gunakan format key dinamis untuk menyimpan password masing-masing user:
sharedPref.edit().putString("user_$username", password).apply()


Validasi Login Sesuai Akun

Ambil password dengan key "user_$username" dan cocokkan dengan input pengguna.
Jika login berhasil, simpan username aktif ke SharedPreferences dengan key "current_user".

val savedPassword = sharedPref.getString("user_$username", null)
if (password == savedPassword) {
    sharedPref.edit().putString("current_user", username).apply()
    startActivity(Intent(this, MainActivity::class.java))
}

Simpan dan Muat Todo List per User

Gunakan file SharedPreferences yang berbeda untuk setiap pengguna berdasarkan username yang sedang login.
val currentUser = sharedPref.getString("current_user", null)
val todoPrefs = getSharedPreferences("todos_$currentUser", MODE_PRIVATE)


Hasil Akhir Produk:

 
 


  

Implementasi:

  • Mendaftar menggunakan menu Register
  • Masuk ke akun menggunakan Login
  • Menambah catatan baru dengan menekan tombol +
  • Mengatur deadline catatan
  • Mencentang checkbox untuk catatan/task yang telah selesai
  • Menghapus catatan dengan mengklik ikon tempat sampah
  • Memperbarui tata letak dan tampilan antarmuka


Link Dokumentasi: [Link Google Docs]

Video Aplikasi: [Link Youtube]

Link source code: [Link Github]

Komentar

Postingan populer dari blog ini

Jetpack Compose: The Basics App

Composable: Birthday Wish Card

Infografis Perkembangan Teknologi Perangkat Bergerak