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 new file mode 100644 index 0000000000000000000000000000000000000000..5a438050f5086e0f17af9662e6823e50612f6d9b --- /dev/null +++ b/app/src/main/java/com/example/bondoyap/ui/transactions/EditTransactionsFragment.kt @@ -0,0 +1,70 @@ +package com.example.bondoyap.ui.transactions + +import android.R +import android.os.Bundle +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 com.example.bondoyap.databinding.FragmentAddTransactionsBinding +import com.example.bondoyap.databinding.FragmentEditTransactionsBinding + +class EditTransactionsFragment : Fragment() { + + private var _binding: FragmentEditTransactionsBinding? = null + + // This property is only valid between onCreateView and + // onDestroyView. + private val binding get() = _binding!! + + private val transactionsViewModel: TransactionsViewModel by viewModels { + TransactionsViewModelFactory((requireContext().applicationContext as TransactionsApplication).repository) + } + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + _binding = FragmentEditTransactionsBinding.inflate(inflater, container, false) + + val pemasukan = "Pemasukan" + val pengeluaran = "Pengeluaran" + + val categories = arrayOf(pemasukan, pengeluaran) + val adapter = ArrayAdapter(requireContext(), R.layout.simple_spinner_item, categories) + + adapter.setDropDownViewResource(R.layout.simple_spinner_dropdown_item) + binding.spinnerKategori.adapter = adapter + + + + binding.buttonSimpan.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 + ) + + transactionsViewModel.upsert(transaction) + + binding.editTextJudul.text.clear() + binding.editTextNominal.text.clear() + binding.spinnerKategori.setSelection(0) + } + + return binding.root + } + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsFragment.kt b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsFragment.kt index d7ecda39782ae64f760d850dd2a1e04a84bb24da..02ae440ad0e4bcd1319ac5d03558c8c7614e3435 100644 --- a/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsFragment.kt +++ b/app/src/main/java/com/example/bondoyap/ui/transactions/TransactionsFragment.kt @@ -37,8 +37,8 @@ class TransactionsFragment: Fragment() { recyclerView.adapter = adapter recyclerView.layoutManager = LinearLayoutManager(requireContext()) - transactionsViewModel.allTransactions.observe(viewLifecycleOwner, Observer { words -> - words?.let { adapter.submitList(it) } + transactionsViewModel.allTransactions.observe(viewLifecycleOwner, Observer { transactions -> + transactions?.let { adapter.submitList(it) } }) binding.buttonAddTransaction.setOnClickListener { 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 27979437e21a0113368b25e24db0a62cc72d91de..c19d6bd754ba08d10edabdebeb943b2f4563df5f 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 @@ -4,6 +4,9 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView +import androidx.cardview.widget.CardView +import androidx.navigation.Navigation +import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView @@ -24,6 +27,7 @@ class TransactionsListAdapter : } class TransactionsViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + private val cardView: CardView = itemView.findViewById(R.id.cardViewTransaction) private val transactionTitle: TextView = itemView.findViewById(R.id.transactionTitle) private val transactionAmount: TextView = itemView.findViewById(R.id.transactionAmount) private val transactionCategory: TextView = itemView.findViewById(R.id.transactionCategory) @@ -36,6 +40,10 @@ class TransactionsViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) true -> "Pemasukan" else -> "Pengeluaran" } + + cardView.setOnClickListener { + Navigation.findNavController(itemView).navigate(R.id.navigation_edit_transactions) + } } companion object { diff --git a/app/src/main/res/layout/fragment_edit_transactions.xml b/app/src/main/res/layout/fragment_edit_transactions.xml new file mode 100644 index 0000000000000000000000000000000000000000..5f8dcfe23bf8f2e46b518f34da93edc1590b63ad --- /dev/null +++ b/app/src/main/res/layout/fragment_edit_transactions.xml @@ -0,0 +1,69 @@ +<?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="match_parent" + android:padding="16dp" + android:orientation="vertical"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/textfield_label_judul" /> + <EditText + android:id="@+id/editText_judul" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:autofillHints="judul" + android:hint="@string/hint_judul" + android:inputType="text" + android:layout_marginBottom="16dp" /> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/textfield_label_nominal" /> + <EditText + android:id="@+id/editText_nominal" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:autofillHints="nominal" + android:hint="@string/hint_nominal" + android:inputType="numberDecimal" + android:layout_marginBottom="16dp" /> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/textfield_label_kategori" /> + <Spinner + android:id="@+id/spinner_kategori" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="16dp" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <Button + android:id="@+id/button_simpan" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:layout_marginEnd="8dp" + android:text="@string/button_simpan" /> + + <Button + android:id="@+id/button_hapus" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="@string/button_hapus" + android:backgroundTint="@color/red"/> + + </LinearLayout> + + + +</LinearLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/recyclerview_transactions.xml b/app/src/main/res/layout/recyclerview_transactions.xml index b7809f7cc03bd59809e9f5da9ab116c2fbd201ee..61d9975dfbc8c4533747c7756a078495a5c85875 100644 --- a/app/src/main/res/layout/recyclerview_transactions.xml +++ b/app/src/main/res/layout/recyclerview_transactions.xml @@ -1,6 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" + android:id="@+id/cardViewTransaction" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="8dp" diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml index bfdc4512aaa3b795a254da2738f18131e0d02902..27c15a681a39c24c4ffedbc1e5ff8e7864537988 100644 --- a/app/src/main/res/navigation/mobile_navigation.xml +++ b/app/src/main/res/navigation/mobile_navigation.xml @@ -23,6 +23,12 @@ android:label="@string/title_transactions" tools:layout="@layout/fragment_add_transactions" /> + <fragment + android:id="@+id/navigation_edit_transactions" + android:name="com.example.bondoyap.ui.transactions.EditTransactionsFragment" + android:label="@string/title_transactions" + tools:layout="@layout/fragment_edit_transactions" /> + <fragment android:id="@+id/navigation_scanner" android:name="com.example.bondoyap.ui.scanner.ScannerFragment" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7aa97cdc1f659dfb654c22ca9393426f44f1beb3..2846dd1e8183e24214ca989ddc92c832d6624f57 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -27,6 +27,7 @@ <string name="textfield_label_kategori">Kategori</string> <string name="textfield_label_lokasi">Lokasi</string> <string name="button_simpan">Simpan</string> + <string name="button_hapus">Hapus</string> <string name="hint_judul">Enter Judul</string> <string name="hint_nominal">Enter Nominal</string> <string name="hint_kategori">Enter Kategori</string>