diff --git a/app/src/main/java/com/example/bondoman/ContainerActivity.kt b/app/src/main/java/com/example/bondoman/ContainerActivity.kt index 513b6a152f7db934ab01a5dcebb06a22256987fe..25f861b696644f11105f63c10de790578dd0f190 100644 --- a/app/src/main/java/com/example/bondoman/ContainerActivity.kt +++ b/app/src/main/java/com/example/bondoman/ContainerActivity.kt @@ -13,13 +13,13 @@ class ContainerActivity : AppCompatActivity() { if (savedInstanceState == null) { // Check if intent contains transaction ID - val transactionId = intent.getIntExtra("transactionId", -1) + val transactionId = intent.getIntExtra("id", -1) if (transactionId != -1) { - // Start the EditTransactionFragment -// val fragment = EditTransactionFragment.newInstance(transactionId) -// supportFragmentManager.beginTransaction() -// .replace(R.id.fragment_container, fragment) -// .commit() +// Start the EditTransactionFragment + val fragment = EditTransactionFragment.newInstance(transactionId) + supportFragmentManager.beginTransaction() + .replace(R.id.fragment_container, fragment) + .commit() } else { // Start the AddTransactionFragment supportFragmentManager.beginTransaction() diff --git a/app/src/main/java/com/example/bondoman/DetailTransactionFragment.kt b/app/src/main/java/com/example/bondoman/DetailTransactionFragment.kt deleted file mode 100644 index 736ebcd5eaba016113a65ab3efd7816d74492c3a..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/example/bondoman/DetailTransactionFragment.kt +++ /dev/null @@ -1,24 +0,0 @@ -package com.example.bondoman - -import android.os.Bundle -import androidx.fragment.app.Fragment -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import com.example.bondoman.databinding.FragmentDetailTransactionBinding -import com.example.bondoman.databinding.FragmentEditTransactionBinding - -class DetailTransactionFragment : Fragment() { - private lateinit var binding : FragmentDetailTransactionBinding - override fun onCreateView( - inflater: LayoutInflater, container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - binding = FragmentDetailTransactionBinding.inflate(inflater, container, false) - return binding.root - } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - - } -} \ No newline at end of file diff --git a/app/src/main/java/com/example/bondoman/EditTransactionFragment.kt b/app/src/main/java/com/example/bondoman/EditTransactionFragment.kt index f05307faecb115a672226f7f67c31b065178aabf..22f43392091f507aafd5d92b043aaf1ec7d6ed85 100644 --- a/app/src/main/java/com/example/bondoman/EditTransactionFragment.kt +++ b/app/src/main/java/com/example/bondoman/EditTransactionFragment.kt @@ -1,14 +1,33 @@ package com.example.bondoman +import android.app.AlertDialog +import android.content.DialogInterface import android.os.Bundle import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.example.bondoman.databinding.FragmentEditTransactionBinding +import com.example.bondoman.retrofit.adapter.TransactionAdapter +import com.example.bondoman.retrofit.data.TransactionDB +import com.example.bondoman.retrofit.data.entity.TransactionEntity class EditTransactionFragment : Fragment() { private lateinit var binding : FragmentEditTransactionBinding + private lateinit var db : TransactionDB + private lateinit var adapter : TransactionAdapter + private val listTransaction = ArrayList<TransactionEntity>() + companion object { + private const val ARG_TRANSACTION_ID = "id" + + fun newInstance(id: Int): EditTransactionFragment { + val fragment = EditTransactionFragment() + val args = Bundle() + args.putInt(ARG_TRANSACTION_ID, id) + fragment.arguments = args + return fragment + } + } override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -19,6 +38,53 @@ class EditTransactionFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + val id = arguments?.getInt(ARG_TRANSACTION_ID) ?: -1 + db = TransactionDB.getInstance(requireContext()) + fetchTransactionDetails(id) + + binding.deleteButton.setOnClickListener { + AlertDialog.Builder(requireContext()) + .setTitle("Delete Transaction") + .setMessage("Are you sure you want to delete this transaction?") + .setPositiveButton("Yes") { dialog, which -> + val transaction = db.transactionDao().getId(id) + db.transactionDao().delete(transaction) + requireActivity().onBackPressed() + } + .setNegativeButton("No") { dialog, which -> } + .show() + } + + binding.saveButton.setOnClickListener { + db = TransactionDB.getInstance(requireContext()) + val kategori = db.transactionDao().getId(id).category + val date = db.transactionDao().getId(id).date + val nama = binding.nameField.text.toString() + val nominal = binding.priceField.text.toString().toInt() + val lokasi = binding.locationField.text.toString() + + val newTransaction = TransactionEntity( + id = id, + name = nama, + price = nominal, + location = lokasi, + category = kategori, + date = date + ) + db.transactionDao().update(newTransaction) + + requireActivity().onBackPressed() + } + } + + private fun fetchTransactionDetails(id: Int) { + val transaction = db.transactionDao().getId(id) + binding.nameField.setText(transaction.name) + binding.priceField.setText(transaction.price.toString()) + binding.locationField.setText(transaction.location) + binding.dateField.setText(transaction.date) + binding.categoryField.setText(transaction.category.toString()) } + } \ No newline at end of file diff --git a/app/src/main/java/com/example/bondoman/TransactionFragment.kt b/app/src/main/java/com/example/bondoman/TransactionFragment.kt index 83a6326e9fa2b82f56020eb999eb83079e17472d..ab95ae19c81ab5f0e11e700e95285975171c0a34 100644 --- a/app/src/main/java/com/example/bondoman/TransactionFragment.kt +++ b/app/src/main/java/com/example/bondoman/TransactionFragment.kt @@ -40,13 +40,7 @@ class TransactionFragment : Fragment() { database = TransactionDB.getInstance(requireContext()) -// val filter = IntentFilter("itb.bos.bondoman.ACTION_RANDOMIZE_TRANSACTION") -// requireContext().registerReceiver(receiver, filter) -// dbTransaction = DbTransaction(requireContext()) -// dbTransaction.open() - -// dbTransaction.deleteAll() adapter = TransactionAdapter(listTransaction) transactionData = binding.itemTransaction @@ -59,45 +53,6 @@ class TransactionFragment : Fragment() { val intent = Intent(requireContext(), ContainerActivity::class.java) startActivity(intent) } -// transactionData.setHasFixedSize(true) -// transactionData.layoutManager = LinearLayoutManager(requireContext()) -// loadDatas() - -// val filteredList: ArrayList<SqlTransaction> = ArrayList(listTransaction) -// var transactionAdapter = TransactionAdapter(filteredList) -// transactionData.adapter = transactionAdapter - -// searchBar = binding.searchBar -// -// searchBar.addTextChangedListener(object : TextWatcher { -// override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { -// // Not used -// } -// -// override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { -// // Update the filteredList based on the search text -// val searchText = s.toString().trim() -// filteredList.clear() -// -// if (searchText.isEmpty()) { -// // If search text is empty, show all items -// filteredList.addAll(listTransaction) -// } else { -// // Filter the list based on the search text -// filteredList.addAll(listTransaction.filter { transaction -> -// transaction.name != null && transaction.name!!.contains(searchText, ignoreCase = true) -// }) -// } -// -// // Notify the adapter about the updated list -// transactionAdapter = TransactionAdapter(filteredList) -// transactionData.adapter = transactionAdapter -// } -// -// override fun afterTextChanged(s: Editable?) { -// // Not used -// } -// }) } override fun onDestroyView() { @@ -117,150 +72,5 @@ class TransactionFragment : Fragment() { listTransaction.addAll(database.transactionDao().getAll()) adapter.notifyDataSetChanged() - -// val datas = dbTransaction.findAll() -// -// datas.forEach { item -> -// val categoryString = item.category?.toString() ?: "PENGELUARAN" -// val category = TransactionCategory.valueOf(categoryString) -// val transaction = SqlTransaction(item.id, item.name, category, item.date, item.price, item.location) -// listTransaction.add(transaction) -// } } -// private lateinit var binding : FragmentTransaksiBinding -// private lateinit var transactionData : RecyclerView -// private val listTransaction= ArrayList<Transaction>() -// private lateinit var searchBar: TextView -// private lateinit var dbTransaction: TransactionSQL -// override fun onCreateView( -// inflater: LayoutInflater, -// container: ViewGroup?, -// savedInstanceState: Bundle? -// ): View { -// binding = FragmentTransaksiBinding.inflate(inflater, container, false) -// return binding.root -// } -// -// override fun onViewCreated(view: View, savedInstanceState: Bundle?) { -// super.onViewCreated(view, savedInstanceState) -// dbTransaction = TransactionSQL(requireContext()) -// dbTransaction.open() -// -//// // Delete all data -//// dbTransaction.deleteAll() -//// -//// // Dummy data insertion -//// insertDummyTransactions() -// -// transactionData = binding.itemTransaction -// transactionData.setHasFixedSize(true) -// transactionData.layoutManager = LinearLayoutManager(requireContext()) -// loadDatas(view) -//// listTransaction.add(Transaction("Semen Tiga Roda","22 Maret 2024", "Pengeluaran", 200000, "Jakarta")) -//// listTransaction.add(Transaction("Semen Tiga Roda","22 Maret 2024", "Pengeluaran", 300000, "Jakarta")) -//// listTransaction.add(Transaction("Semen Tiga Roda","22 Maret 2024", "Pengeluaran", 300000, "Jakarta")) -//// listTransaction.add(Transaction("Mapel Sirup","22 Maret 2024", "Pengeluaran", 100000, "Jakarta")) -//// listTransaction.add(Transaction("Jeruks","22 Maret 2024", "Pengeluaran", 200000, "Jakarta")) -//// listTransaction.add(Transaction("Apel","22 Maret 2024", "Pengeluaran", 300000, "Jakarta")) -// -// -// val filteredList: ArrayList<Transaction> = ArrayList(listTransaction) -// var transactionAdapter = TransactionAdapter(filteredList) -// transactionData.adapter = transactionAdapter -// -// searchBar = binding.searchBar -// -// searchBar.addTextChangedListener(object : TextWatcher { -// override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { -// // Not used -// } -// -// override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { -// // Update the filteredList based on the search text -// val searchText = s.toString().trim() -// filteredList.clear() -// -// if (searchText.isEmpty()) { -// // If search text is empty, show all items -// filteredList.addAll(listTransaction) -// } else { -// // Filter the list based on the search text -// filteredList.addAll(listTransaction.filter { transaction -> -// transaction.name != null && transaction.name.contains(searchText, ignoreCase = true) -// }) -// } -// -// // Notify the adapter about the updated list -// transactionAdapter = TransactionAdapter(filteredList) -// transactionData.adapter = transactionAdapter -// } -// -// override fun afterTextChanged(s: Editable?) { -// // Not used -// } -// }) -// -// -// } -// -// private fun insertDummyTransactions() { -// val dummyTransaction1 = ContentValues().apply { -// put(Kontraktor.TransactionTable.NAME, "Transaction 1") -// put(Kontraktor.TransactionTable.CATEGORY, "Category 1") -// put(Kontraktor.TransactionTable.DATE, "2024-04-01") -// put(Kontraktor.TransactionTable.PRICE, 100) -// put(Kontraktor.TransactionTable.LOCATION, "Location 1") -// } -// -// val dummyTransaction2 = ContentValues().apply { -// put(Kontraktor.TransactionTable.NAME, "Transaction 2") -// put(Kontraktor.TransactionTable.CATEGORY, "Category 2") -// put(Kontraktor.TransactionTable.DATE, "2024-04-02") -// put(Kontraktor.TransactionTable.PRICE, 200) -// put(Kontraktor.TransactionTable.LOCATION, "Location 2") -// } -// -// val dummyTransaction3 = ContentValues().apply { -// put(Kontraktor.TransactionTable.NAME, "Transaction 3") -// put(Kontraktor.TransactionTable.CATEGORY, "Category 3") -// put(Kontraktor.TransactionTable.DATE, "2024-04-03") -// put(Kontraktor.TransactionTable.PRICE, 300) -// put(Kontraktor.TransactionTable.LOCATION, "Location 3") -// } -// -// val dummyTransaction4 = ContentValues().apply { -// put(Kontraktor.TransactionTable.NAME, "Transaction 4") -// put(Kontraktor.TransactionTable.CATEGORY, "Category 4") -// put(Kontraktor.TransactionTable.DATE, "2024-04-04") -// put(Kontraktor.TransactionTable.PRICE, 400) -// put(Kontraktor.TransactionTable.LOCATION, "Location 4") -// } -// -// val dummyTransaction5 = ContentValues().apply { -// put(Kontraktor.TransactionTable.NAME, "Transaction 5") -// put(Kontraktor.TransactionTable.CATEGORY, "Category 5") -// put(Kontraktor.TransactionTable.DATE, "2024-04-05") -// put(Kontraktor.TransactionTable.PRICE, 500) -// put(Kontraktor.TransactionTable.LOCATION, "Location 5") -// } -// -// // Insert dummy transactions into the database -// dbTransaction.insert(dummyTransaction1) -// dbTransaction.insert(dummyTransaction2) -// dbTransaction.insert(dummyTransaction3) -// dbTransaction.insert(dummyTransaction4) -// dbTransaction.insert(dummyTransaction5) -// -// } -// -// fun loadDatas(view: View) { -// -// insertDummyTransactions() -// val datas = dbTransaction.findAll() -// -// datas.forEach { -// item -> -// listTransaction.add(Transaction(item.id,item.name,item.date,item.category, item.price,item.location)) -// } -// } } \ No newline at end of file diff --git a/app/src/main/java/com/example/bondoman/retrofit/adapter/TransactionAdapter.kt b/app/src/main/java/com/example/bondoman/retrofit/adapter/TransactionAdapter.kt index 613afa2310ca36f75597815038e14533efecb0dd..ea8ef8acd53b89f062c6eff24ec4544d4bfc69c3 100644 --- a/app/src/main/java/com/example/bondoman/retrofit/adapter/TransactionAdapter.kt +++ b/app/src/main/java/com/example/bondoman/retrofit/adapter/TransactionAdapter.kt @@ -12,7 +12,17 @@ import com.example.bondoman.ContainerActivity import com.example.bondoman.R import com.example.bondoman.retrofit.data.entity.TransactionEntity + class TransactionAdapter(private val list: ArrayList<TransactionEntity>): RecyclerView.Adapter<TransactionAdapter.ViewHolder>(){ + private lateinit var transactionDialog: Dialog + + fun setDialog(dialog: Dialog) { + this.transactionDialog = dialog + } + + interface Dialog{ + fun onClick(position: Int) + } override fun onBindViewHolder(holder: ViewHolder, position: Int) { val currentData = list[position] @@ -50,7 +60,7 @@ class TransactionAdapter(private val list: ArrayList<TransactionEntity>): Recycl val intent = Intent(holder.itemView.context, ContainerActivity::class.java) // Optionally, pass data to the AddTransactionActivity - intent.putExtra("transactionId", currentData.id) + intent.putExtra("id", currentData.id) // Start the activity holder.itemView.context.startActivity(intent) diff --git a/app/src/main/java/com/example/bondoman/retrofit/data/TransactionDB.kt b/app/src/main/java/com/example/bondoman/retrofit/data/TransactionDB.kt index c3ed442c664dcb11fea85d48a0f56e911349fd50..a08188c8942955b19a57bf08151b7bca15d257e7 100644 --- a/app/src/main/java/com/example/bondoman/retrofit/data/TransactionDB.kt +++ b/app/src/main/java/com/example/bondoman/retrofit/data/TransactionDB.kt @@ -7,7 +7,7 @@ import androidx.room.RoomDatabase import com.example.bondoman.retrofit.data.dao.TransactionDao import com.example.bondoman.retrofit.data.entity.TransactionEntity -@Database(entities = [TransactionEntity::class], version = 1) +@Database(entities = [TransactionEntity::class], version = 2) abstract class TransactionDB : RoomDatabase() { abstract fun transactionDao(): TransactionDao @@ -16,7 +16,7 @@ abstract class TransactionDB : RoomDatabase() { fun getInstance(context: Context) : TransactionDB{ if (instance==null){ - instance = Room.databaseBuilder(context, TransactionDB::class.java, "transaction-database") + instance = Room.databaseBuilder(context, TransactionDB::class.java, "db") .allowMainThreadQueries() .build() } diff --git a/app/src/main/java/com/example/bondoman/retrofit/data/dao/TransactionDao.kt b/app/src/main/java/com/example/bondoman/retrofit/data/dao/TransactionDao.kt index 27ebc42d15503365179a3e7de04b69a9a9d433fe..4998a1c302c9a03f8d8b8f3d0d6d85b569e15df6 100644 --- a/app/src/main/java/com/example/bondoman/retrofit/data/dao/TransactionDao.kt +++ b/app/src/main/java/com/example/bondoman/retrofit/data/dao/TransactionDao.kt @@ -4,19 +4,22 @@ import androidx.room.Dao import androidx.room.Delete import androidx.room.Insert import androidx.room.Query +import androidx.room.Update import com.example.bondoman.retrofit.data.entity.TransactionEntity @Dao interface TransactionDao { + + @Query("SELECT * FROM transactionentity") fun getAll(): List<TransactionEntity> @Query("SELECT * FROM transactionentity WHERE id IN (:userIds)") fun loadAllByIds(userIds: IntArray): List<TransactionEntity> - @Query("SELECT * FROM transactionentity WHERE name LIKE :name AND " + - "price LIKE :nominal LIMIT 1") + @Query("SELECT * FROM transactionentity WHERE nama_transaksi LIKE :name AND " + + "nominal_transaksi LIKE :nominal LIMIT 1") fun findByName(name: String, nominal: String): TransactionEntity @Insert @@ -24,4 +27,10 @@ interface TransactionDao { @Delete fun delete(transaction: TransactionEntity) + + @Update + fun update(transaction: TransactionEntity) + @Query("SELECT * FROM transactionentity WHERE id = :id") + fun getId(id: Int): TransactionEntity + } \ No newline at end of file diff --git a/app/src/main/java/com/example/bondoman/retrofit/data/entity/TransactionEntitiy.kt b/app/src/main/java/com/example/bondoman/retrofit/data/entity/TransactionEntitiy.kt deleted file mode 100644 index 1e443c958adf95089bcb29cce44f94b56eb4cde4..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/example/bondoman/retrofit/data/entity/TransactionEntitiy.kt +++ /dev/null @@ -1,20 +0,0 @@ -package com.example.bondoman.retrofit.data.entity - -import androidx.room.ColumnInfo -import androidx.room.Entity -import androidx.room.PrimaryKey - -enum class Category { - Pemasukan, - Pengeluaran -} - -@Entity -data class TransactionEntity( - @PrimaryKey(autoGenerate = true) var id: Int? = null, - @ColumnInfo(name = "name") var name: String? = null, - @ColumnInfo(name = "category") var category: Category? = null, - @ColumnInfo(name = "date") var date: String? = null, - @ColumnInfo(name = "price") var price: Int? = null, - @ColumnInfo(name = "location") var location: String? = null -) \ No newline at end of file diff --git a/app/src/main/java/com/example/bondoman/retrofit/data/entity/TransactionEntity.kt b/app/src/main/java/com/example/bondoman/retrofit/data/entity/TransactionEntity.kt new file mode 100644 index 0000000000000000000000000000000000000000..efed10853ea363b2e51aba1f131c5a98120a199d --- /dev/null +++ b/app/src/main/java/com/example/bondoman/retrofit/data/entity/TransactionEntity.kt @@ -0,0 +1,20 @@ +package com.example.bondoman.retrofit.data.entity + +import androidx.room.ColumnInfo +import androidx.room.Entity +import androidx.room.PrimaryKey + +enum class Category { + Pemasukan, + Pengeluaran +} + +@Entity +data class TransactionEntity( + @PrimaryKey(autoGenerate = true) var id: Int? = null, + @ColumnInfo(name = "nama_transaksi") var name: String? = null, + @ColumnInfo(name = "kategori_transaksi") var category: Category? = null, + @ColumnInfo(name = "tanggal_transaksi") var date: String? = null, + @ColumnInfo(name = "nominal_transaksi") var price: Int? = null, + @ColumnInfo(name = "lokasi_transaksi") var location: String? = null +) \ No newline at end of file diff --git a/app/src/main/res/drawable/delete.xml b/app/src/main/res/drawable/delete.xml new file mode 100644 index 0000000000000000000000000000000000000000..3ff265b5f755197a47d3da49ba51be3833313b45 --- /dev/null +++ b/app/src/main/res/drawable/delete.xml @@ -0,0 +1,34 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="30dp" + android:height="30dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:pathData="M11.99,21.242C4.225,21.242 5.403,17.617 5.403,9.598" + android:strokeLineJoin="round" + android:strokeWidth="1.5" + android:fillColor="#00000000" + android:strokeColor="#000000" + android:strokeLineCap="round"/> + <path + android:pathData="M18.599,9.598C18.599,15.827 19.295,19.405 15.967,20.692" + android:strokeLineJoin="round" + android:strokeWidth="1.5" + android:fillColor="#00000000" + android:strokeColor="#000000" + android:strokeLineCap="round"/> + <path + android:pathData="M20.075,6.524H3.925" + android:strokeLineJoin="round" + android:strokeWidth="1.5" + android:fillColor="#00000000" + android:strokeColor="#000000" + android:strokeLineCap="round"/> + <path + android:pathData="M15.425,6.524C15.425,6.524 15.954,2.758 11.999,2.758C10.27,2.758 9.398,3.479 8.964,4.29" + android:strokeLineJoin="round" + android:strokeWidth="1.5" + android:fillColor="#00000000" + android:strokeColor="#000000" + android:strokeLineCap="round"/> +</vector> diff --git a/app/src/main/res/layout/fragment_detail_transaction.xml b/app/src/main/res/layout/fragment_detail_transaction.xml deleted file mode 100644 index d175656c33cf67c56c8203031938c0645fe35920..0000000000000000000000000000000000000000 --- a/app/src/main/res/layout/fragment_detail_transaction.xml +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - android:layout_width="match_parent" - android:layout_height="match_parent" - tools:context=".DetailTransactionFragment"> - - <!-- TODO: Update blank fragment layout --> - <TextView - android:layout_width="match_parent" - android:layout_height="match_parent" - android:text="@string/hello_blank_fragment" /> - -</FrameLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_edit_transaction.xml b/app/src/main/res/layout/fragment_edit_transaction.xml index f4cb513d8c5dedad844e66325cb9b2f1fde8d4b1..ee779d70837163f139d5b1562e6692e4ced016cd 100644 --- a/app/src/main/res/layout/fragment_edit_transaction.xml +++ b/app/src/main/res/layout/fragment_edit_transaction.xml @@ -12,16 +12,25 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/container_edit" - android:layout_marginTop="24dp" + android:layout_marginTop="75dp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent"> </ImageView> + <com.google.android.material.floatingactionbutton.FloatingActionButton + android:id="@+id/deleteButton" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:src="@drawable/delete" + tools:ignore="MissingConstraints" + tools:layout_editor_absoluteX="310dp" + tools:layout_editor_absoluteY="6dp" /> + <LinearLayout android:layout_width="match_parent" android:layout_height="500dp" - android:layout_marginTop="64dp" + android:layout_marginTop="100dp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -37,6 +46,7 @@ /> <EditText + android:id="@+id/nameField" android:layout_width="match_parent" android:layout_height="48dp" android:layout_marginTop="8dp" @@ -56,6 +66,7 @@ /> <EditText + android:id="@+id/priceField" android:layout_width="match_parent" android:layout_marginTop="8dp" android:layout_height="48dp" @@ -75,6 +86,7 @@ /> <EditText + android:id="@+id/locationField" android:layout_width="match_parent" android:layout_marginTop="8dp" android:layout_height="48dp" @@ -88,6 +100,7 @@ <TextView + android:id="@+id/categoryField" android:layout_width="match_parent" android:layout_marginTop="24dp" android:layout_height="48dp" @@ -100,6 +113,7 @@ /> <TextView + android:id="@+id/dateField" android:layout_width="match_parent" android:layout_marginTop="24dp" android:layout_height="48dp" @@ -112,6 +126,7 @@ /> <Button + android:id="@+id/saveButton" android:layout_width="match_parent" android:layout_height="56dp" android:layout_marginTop="24dp"