diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
index b76d5a83504101aa827bf32bbcc5698b6603e58e..ab0d76e2e7db4d51742f98872c75074a8f72c796 100644
--- a/.idea/deploymentTargetDropDown.xml
+++ b/.idea/deploymentTargetDropDown.xml
@@ -10,12 +10,12 @@
               <deviceKey>
                 <Key>
                   <type value="VIRTUAL_DEVICE_PATH" />
-                  <value value="C:\Users\Rayhan Hanif\.android\avd\Pixel_3a_API_34_extension_level_7_x86_64.avd" />
+                  <value value="C:\Users\Rayhan Hanif\.android\avd\Pixel_5_API_31.avd" />
                 </Key>
               </deviceKey>
             </Target>
           </targetSelectedWithDropDown>
-          <timeTargetWasSelectedWithDropDown value="2024-03-30T21:41:20.342716200Z" />
+          <timeTargetWasSelectedWithDropDown value="2024-03-31T15:18:38.036207900Z" />
         </State>
       </entry>
     </value>
diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/EditTransactionsFragment.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/EditTransactionsFragment.kt
index 5a438050f5086e0f17af9662e6823e50612f6d9b..9ca1bc7c70e3a2fc21a5fdc169fc8c62b9e80476 100644
--- a/app/src/main/java/com/example/bondoyap/ui/transactions/EditTransactionsFragment.kt
+++ b/app/src/main/java/com/example/bondoyap/ui/transactions/EditTransactionsFragment.kt
@@ -2,14 +2,21 @@ package com.example.bondoyap.ui.transactions
 
 import android.R
 import android.os.Bundle
+import android.text.Editable
+import android.text.Spannable
+import android.text.SpannableStringBuilder
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.ArrayAdapter
 import androidx.fragment.app.Fragment
 import androidx.fragment.app.viewModels
+import androidx.navigation.fragment.findNavController
 import com.example.bondoyap.databinding.FragmentAddTransactionsBinding
 import com.example.bondoyap.databinding.FragmentEditTransactionsBinding
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers.Main
+import kotlinx.coroutines.launch
 
 class EditTransactionsFragment : Fragment() {
 
@@ -39,7 +46,22 @@ class EditTransactionsFragment : Fragment() {
         adapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item)
         binding.spinnerKategori.adapter = adapter
 
+        val transactionId: Int = arguments?.getInt("transaction_id") ?: -1
 
+        CoroutineScope(Main).launch {
+
+            val originalTransaction: Transactions = transactionsViewModel.get(transactionId)
+
+            binding.editTextJudul.text = SpannableStringBuilder(originalTransaction.judul)
+            binding.editTextNominal.text = SpannableStringBuilder(originalTransaction.nominal.toString())
+
+            if (originalTransaction.isPemasukan) {
+                binding.spinnerKategori.setSelection(categories.indexOf(pemasukan))
+            } else {
+                binding.spinnerKategori.setSelection(categories.indexOf(pengeluaran))
+            }
+
+        }
 
         binding.buttonSimpan.setOnClickListener {
             val isPemasukan: Boolean = when (binding.spinnerKategori.selectedItem.toString()) {
@@ -50,14 +72,38 @@ class EditTransactionsFragment : Fragment() {
             val transaction: Transactions = Transactions(
                 judul = binding.editTextJudul.text.toString(),
                 nominal = binding.editTextNominal.text.toString().toDouble(),
-                isPemasukan = isPemasukan
+                isPemasukan = isPemasukan,
+                id = transactionId
             )
 
             transactionsViewModel.upsert(transaction)
 
-            binding.editTextJudul.text.clear()
-            binding.editTextNominal.text.clear()
-            binding.spinnerKategori.setSelection(0)
+            binding.editTextJudul.text = SpannableStringBuilder(transaction.judul)
+            binding.editTextNominal.text = SpannableStringBuilder(transaction.nominal.toString())
+
+            if (transaction.isPemasukan) {
+                binding.spinnerKategori.setSelection(categories.indexOf(pemasukan))
+            } else {
+                binding.spinnerKategori.setSelection(categories.indexOf(pengeluaran))
+            }
+        }
+
+        binding.buttonHapus.setOnClickListener {
+            val isPemasukan: Boolean = when (binding.spinnerKategori.selectedItem.toString()) {
+                pemasukan -> true
+                else -> false
+            }
+
+            val transaction: Transactions = Transactions(
+                judul = binding.editTextJudul.text.toString(),
+                nominal = binding.editTextNominal.text.toString().toDouble(),
+                isPemasukan = isPemasukan,
+                id = transactionId
+            )
+
+            transactionsViewModel.delete(transaction)
+
+            findNavController().navigate(com.example.bondoyap.R.id.navigation_transactions)
         }
 
         return binding.root
diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsDao.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsDao.kt
index 253af5c2458a627a2b7ec985f305ff313dd2b0c2..9d808a52834fa7b7c3d032707694ee4cc8de1a53 100644
--- a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsDao.kt
+++ b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsDao.kt
@@ -20,5 +20,5 @@ interface TransactionsDao {
     fun getTransactions(): Flow<List<Transactions>>
 
     @Query("SELECT * FROM transactions WHERE transactions.id == :transactionsId")
-    fun getTransactionById(transactionsId: Int): Transactions
+    suspend fun getTransactionById(transactionsId: Int?): Transactions
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsListAdapter.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsListAdapter.kt
index c19d6bd754ba08d10edabdebeb943b2f4563df5f..578a578da94a61fd696d1d43e44c14877248d406 100644
--- a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsListAdapter.kt
+++ b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsListAdapter.kt
@@ -1,5 +1,6 @@
 package com.example.bondoyap.ui.transactions
 
+import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
@@ -42,7 +43,9 @@ class TransactionsViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
         }
 
         cardView.setOnClickListener {
-            Navigation.findNavController(itemView).navigate(R.id.navigation_edit_transactions)
+            val bundle: Bundle = Bundle()
+            bundle.putInt("transaction_id", transaction.id)
+            Navigation.findNavController(itemView).navigate(R.id.navigation_edit_transactions, bundle)
         }
     }
 
diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsRepository.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsRepository.kt
index 8887f9907c46d662ead061da80996f0f9f017ad5..e5e402a75ab9fa2205f9f274c465bd7868975925 100644
--- a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsRepository.kt
+++ b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsRepository.kt
@@ -2,12 +2,22 @@ package com.example.bondoyap.ui.transactions
 
 import androidx.annotation.WorkerThread
 import kotlinx.coroutines.flow.Flow
+import kotlinx.coroutines.flow.firstOrNull
 
 class TransactionsRepository(private val transactionsDao: TransactionsDao) {
-    val allTransactions: Flow<List<Transactions>> = transactionsDao.getTransactions();
+    val allTransactions: Flow<List<Transactions>> = transactionsDao.getTransactions()
 
     @WorkerThread
     suspend fun upsert(transactions: Transactions) {
         transactionsDao.upsertTransaction(transactions)
     }
+
+    @WorkerThread
+    suspend fun delete(transactions: Transactions) {
+        transactionsDao.deleteTransaction(transactions)
+    }
+
+    suspend fun get(transactionId: Int?): Transactions {
+        return transactionsDao.getTransactionById(transactionId)
+    }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsViewModel.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsViewModel.kt
index 69022fb483328916f2c0686f2ee6a80d363a9a15..ff47645bc7e10fbd57dd6763bea0e072756dd0c7 100644
--- a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsViewModel.kt
+++ b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsViewModel.kt
@@ -8,6 +8,8 @@ import androidx.lifecycle.asLiveData
 import androidx.lifecycle.createSavedStateHandle
 import androidx.lifecycle.viewModelScope
 import androidx.lifecycle.viewmodel.CreationExtras
+import kotlinx.coroutines.Deferred
+import kotlinx.coroutines.async
 import kotlinx.coroutines.flow.MutableStateFlow
 import kotlinx.coroutines.flow.update
 import kotlinx.coroutines.launch
@@ -20,6 +22,15 @@ class TransactionsViewModel(
     fun upsert(transactions: Transactions) = viewModelScope.launch {
         repository.upsert(transactions)
     }
+    fun delete(transactions: Transactions) = viewModelScope.launch {
+        repository.delete(transactions)
+    }
+    suspend fun get(transactionId: Int?): Transactions {
+        val deferred: Deferred<Transactions> = viewModelScope.async {
+            repository.get(transactionId)
+        }
+        return deferred.await()
+    }
 }
 
 class TransactionsViewModelFactory(private val repository: TransactionsRepository): ViewModelProvider.Factory {