diff --git a/app/src/main/java/com/atm/bondowowo/ui/transaction/TransactionInputFragment.kt b/app/src/main/java/com/atm/bondowowo/ui/transaction/TransactionInputFragment.kt
index cc2709cbd1508dd8460dad2e4163949c8a07aa4e..6ce3208cacdb38620ac5815d16b9eb77cde8c090 100644
--- a/app/src/main/java/com/atm/bondowowo/ui/transaction/TransactionInputFragment.kt
+++ b/app/src/main/java/com/atm/bondowowo/ui/transaction/TransactionInputFragment.kt
@@ -9,8 +9,10 @@ import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import android.widget.ArrayAdapter
 import android.widget.Button
 import android.widget.EditText
+import android.widget.Spinner
 import android.widget.Toast
 import androidx.annotation.RequiresApi
 import androidx.fragment.app.Fragment
@@ -22,7 +24,9 @@ import java.time.LocalDateTime
 class TransactionInputFragment : Fragment() {
     private lateinit var nama_transaksi: EditText
     private lateinit var nominal_transaksi: EditText
-    private lateinit var kategori_transaksi: EditText
+//    private lateinit var kategori_transaksi: EditText
+    private lateinit var kategori_transaksi: Spinner
+
     private lateinit var lokasi_transaksi: EditText
     private lateinit var btnSave: Button
     private lateinit var database: AppDatabase
@@ -47,6 +51,11 @@ class TransactionInputFragment : Fragment() {
 
         database = AppDatabase.getInstance(requireContext())
 
+        val categories = arrayOf("pemasukan", "pengeluaran")
+        val adapter = ArrayAdapter(requireContext(), android.R.layout.simple_spinner_item, categories)
+        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
+        kategori_transaksi.adapter = adapter
+
         val args = arguments
         if (args != null) {
             val id = args.getInt("id", 0)
@@ -54,37 +63,40 @@ class TransactionInputFragment : Fragment() {
 
             nama_transaksi.setText(transaction.nama)
             nominal_transaksi.setText(transaction.nominal.toString())
-            kategori_transaksi.setText(transaction.kategori)
+            kategori_transaksi.setSelection(categories.indexOf(transaction.kategori))
             lokasi_transaksi.setText(transaction.lokasi)
         }
 
         btnSave.setOnClickListener {
-            if (nama_transaksi.text.isNotEmpty() && nominal_transaksi.text.isNotEmpty() && kategori_transaksi.text.isNotEmpty() && lokasi_transaksi.text.isNotEmpty()) {
-                if (args != null) {
-                    database.transactionDao().update(
-                        TransactionEntity(
-                            args.getInt("id", 0),
-                            LocalDateTime.now(),
-                            nama_transaksi.text.toString(),
-                            kategori_transaksi.text.toString(),
-                            nominal_transaksi.text.toString().toDouble(),
-                            lokasi_transaksi.text.toString()
-                        )
+            if (nama_transaksi.text.isNotEmpty() && nominal_transaksi.text.isNotEmpty() && lokasi_transaksi.text.isNotEmpty()) {
+                val category = kategori_transaksi.selectedItem.toString()
+                val transactionEntity = if (args != null) {
+                    TransactionEntity(
+                        args.getInt("id", 0),
+                        LocalDateTime.now(),
+                        nama_transaksi.text.toString(),
+                        category,
+                        nominal_transaksi.text.toString().toDouble(),
+                        lokasi_transaksi.text.toString()
                     )
-                    listener.onTransactionSubmitted()
                 } else {
-                    database.transactionDao().insertAll(
-                        TransactionEntity(
-                            null,
-                            LocalDateTime.now(),
-                            nama_transaksi.text.toString(),
-                            kategori_transaksi.text.toString(),
-                            nominal_transaksi.text.toString().toDouble(),
-                            lokasi_transaksi.text.toString()
-                        )
+                    TransactionEntity(
+                        null,
+                        LocalDateTime.now(),
+                        nama_transaksi.text.toString(),
+                        category,
+                        nominal_transaksi.text.toString().toDouble(),
+                        lokasi_transaksi.text.toString()
                     )
-                    listener.onTransactionSubmitted()
                 }
+
+                if (args != null) {
+                    database.transactionDao().update(transactionEntity)
+                } else {
+                    database.transactionDao().insertAll(transactionEntity)
+                }
+
+                listener.onTransactionSubmitted()
             } else {
                 Toast.makeText(requireContext(), "Input invalid", Toast.LENGTH_SHORT).show()
             }
diff --git a/app/src/main/res/layout/fragment_transaction_input.xml b/app/src/main/res/layout/fragment_transaction_input.xml
index 865f4347455d620558a4971929679d507d2a9c5c..35219c2f5c8b46f3153c93c901c455a5190ce29f 100644
--- a/app/src/main/res/layout/fragment_transaction_input.xml
+++ b/app/src/main/res/layout/fragment_transaction_input.xml
@@ -63,14 +63,16 @@
         android:layout_marginTop="5dp"
         android:layout_marginRight="30dp"
         android:layout_marginLeft="30dp">
-        <EditText
+        <Spinner
             android:id="@+id/kategori_transaksi"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:inputType="text"
-            android:hint="Kategori (pengeluaran/pemasukan)"/>
+            android:layout_marginTop="16dp"/>
+
     </com.google.android.material.textfield.TextInputLayout>
 
+
+
     <com.google.android.material.textfield.TextInputLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"