diff --git a/app/app/src/main/java/tech/mercantec/easyeat/helpers/shopping_list.kt b/app/app/src/main/java/tech/mercantec/easyeat/helpers/shopping_list.kt index 740f9fb..1d5684b 100644 --- a/app/app/src/main/java/tech/mercantec/easyeat/helpers/shopping_list.kt +++ b/app/app/src/main/java/tech/mercantec/easyeat/helpers/shopping_list.kt @@ -2,9 +2,7 @@ package tech.mercantec.easyeat.helpers import android.content.Context import kotlinx.serialization.Serializable - -@Serializable -data class ShoppingListItem(val id: Int, val name: String, val amount: Double?, val unit: String?, val checked: Boolean) +import tech.mercantec.easyeat.models.ShoppingListItem fun getShoppingList(ctx: Context): Array { return requestJson>(ctx, "GET", "/api/ShoppingList/get", null) diff --git a/app/app/src/main/java/tech/mercantec/easyeat/models/ShoppingListItem.kt b/app/app/src/main/java/tech/mercantec/easyeat/models/ShoppingListItem.kt new file mode 100644 index 0000000..1710ca0 --- /dev/null +++ b/app/app/src/main/java/tech/mercantec/easyeat/models/ShoppingListItem.kt @@ -0,0 +1,6 @@ +package tech.mercantec.easyeat.models + +import kotlinx.serialization.Serializable + +@Serializable +data class ShoppingListItem(val id: Int, val name: String, val amount: Double?, val unit: String?, val checked: Boolean) diff --git a/app/app/src/main/java/tech/mercantec/easyeat/ui/shopping_list/ShoppingItemAdapter.kt b/app/app/src/main/java/tech/mercantec/easyeat/ui/shopping_list/ShoppingItemAdapter.kt new file mode 100644 index 0000000..7458594 --- /dev/null +++ b/app/app/src/main/java/tech/mercantec/easyeat/ui/shopping_list/ShoppingItemAdapter.kt @@ -0,0 +1,28 @@ +package tech.mercantec.easyeat.ui.shopping_list + +import android.content.Context +import android.icu.text.DecimalFormat +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ArrayAdapter +import android.widget.TextView +import tech.mercantec.easyeat.R +import tech.mercantec.easyeat.models.ShoppingListItem + +class ShoppingItemAdapter(context: Context, items: Array) + : ArrayAdapter(context, R.layout.shopping_list_item, items) { + + override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { + val item = getItem(position) + val view = convertView ?: LayoutInflater.from(context).inflate(R.layout.shopping_list_item, parent, false) + + item?.let { item -> + view.findViewById(R.id.amount).text = DecimalFormat("#.##").format(item.amount) + view.findViewById(R.id.unit).text = item.unit + view.findViewById(R.id.name).text = item.name + } + + return view + } +} diff --git a/app/app/src/main/java/tech/mercantec/easyeat/ui/shopping_list/ShoppingListFragment.kt b/app/app/src/main/java/tech/mercantec/easyeat/ui/shopping_list/ShoppingListFragment.kt index 878cab7..fc074be 100644 --- a/app/app/src/main/java/tech/mercantec/easyeat/ui/shopping_list/ShoppingListFragment.kt +++ b/app/app/src/main/java/tech/mercantec/easyeat/ui/shopping_list/ShoppingListFragment.kt @@ -15,6 +15,8 @@ import tech.mercantec.easyeat.R import tech.mercantec.easyeat.databinding.FragmentShoppingListBinding import tech.mercantec.easyeat.helpers.ApiRequestException import tech.mercantec.easyeat.helpers.addShoppingItem +import tech.mercantec.easyeat.helpers.getShoppingList +import tech.mercantec.easyeat.models.ShoppingListItem import kotlin.concurrent.thread class ShoppingListFragment : Fragment() { @@ -33,6 +35,23 @@ class ShoppingListFragment : Fragment() { _binding = FragmentShoppingListBinding.inflate(inflater, container, false) val root: View = binding.root + thread { + val items: Array + try { + items = getShoppingList(requireContext()) + } catch (e: ApiRequestException) { + activity?.runOnUiThread { + Toast.makeText(context, e.message, Toast.LENGTH_LONG).show() + } + + return@thread + } + + activity?.runOnUiThread { + binding.shoppingList.adapter = ShoppingItemAdapter(requireContext(), items) + } + } + binding.addToShoppingList.setOnClickListener { val view = requireActivity().layoutInflater.inflate(R.layout.dialog_add_to_shopping_list, null) diff --git a/app/app/src/main/res/layout/activity_main.xml b/app/app/src/main/res/layout/activity_main.xml index 37665d9..e338c8e 100644 --- a/app/app/src/main/res/layout/activity_main.xml +++ b/app/app/src/main/res/layout/activity_main.xml @@ -2,11 +2,9 @@ + android:layout_height="match_parent"> + + + + + + + + +