diff --git a/app/src/main/java/de/chrissthecoder/store/adapter/DashboardFragmentPagerAdapter.kt b/app/src/main/java/de/chrissthecoder/store/adapter/DashboardFragmentPagerAdapter.kt
new file mode 100644
index 0000000..69a65ee
--- /dev/null
+++ b/app/src/main/java/de/chrissthecoder/store/adapter/DashboardFragmentPagerAdapter.kt
@@ -0,0 +1,20 @@
+package de.chrissthecoder.store.adapter
+
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentManager
+import androidx.lifecycle.Lifecycle
+import androidx.viewpager2.adapter.FragmentStateAdapter
+import de.chrissthecoder.store.ui.dashboard.tabfragment.ShoppinglistFragment
+import de.chrissthecoder.store.ui.dashboard.tabfragment.UnderstockFragment
+
+class DashboardFragmentPagerAdapter(manager: FragmentManager, lifecycle: Lifecycle) : FragmentStateAdapter(manager, lifecycle) {
+
+ override fun getItemCount() : Int {
+ return 2
+ }
+
+ override fun createFragment(position: Int) : Fragment {
+ return if(position == 0) { ShoppinglistFragment() }
+ else { UnderstockFragment() }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/de/chrissthecoder/store/ui/dashboard/DashboardFragment.kt b/app/src/main/java/de/chrissthecoder/store/ui/dashboard/DashboardFragment.kt
index 276ccf3..f908fb1 100644
--- a/app/src/main/java/de/chrissthecoder/store/ui/dashboard/DashboardFragment.kt
+++ b/app/src/main/java/de/chrissthecoder/store/ui/dashboard/DashboardFragment.kt
@@ -6,26 +6,53 @@ import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.lifecycle.ViewModelProvider
+import androidx.viewpager2.widget.ViewPager2
+import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback
+import com.google.android.material.tabs.TabLayout
+import com.google.android.material.tabs.TabLayout.OnTabSelectedListener
+import de.chrissthecoder.store.adapter.DashboardFragmentPagerAdapter
import de.chrissthecoder.store.databinding.FragmentDashboardBinding
class DashboardFragment : Fragment() {
private var _binding: FragmentDashboardBinding? = null
-
- // This property is only valid between onCreateView and
- // onDestroyView.
private val binding get() = _binding!!
- override fun onCreateView(
- inflater: LayoutInflater,
- container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View {
- val dashboardViewModel = ViewModelProvider(this).get(DashboardViewModel::class.java)
+ private lateinit var tabLayout: TabLayout
+ private lateinit var viewPager: ViewPager2
+ private lateinit var adapter: DashboardFragmentPagerAdapter
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?) : View {
_binding = FragmentDashboardBinding.inflate(inflater, container, false)
val root: View = binding.root
+ val dashboardViewModel = ViewModelProvider(this).get(DashboardViewModel::class.java)
+
+ tabLayout = binding.tabLayout
+ viewPager = binding.viewPager
+ adapter = DashboardFragmentPagerAdapter(parentFragmentManager, lifecycle)
+ viewPager.adapter = adapter
+
+ tabLayout.addOnTabSelectedListener(object : OnTabSelectedListener {
+ override fun onTabSelected(tab: TabLayout.Tab?) {
+ if (tab != null) {
+ viewPager.currentItem = tab.position
+ }
+ }
+
+ override fun onTabUnselected(tab: TabLayout.Tab?) { }
+ override fun onTabReselected(tab: TabLayout.Tab?) { }
+ })
+
+ viewPager.registerOnPageChangeCallback(object : OnPageChangeCallback() {
+ override fun onPageSelected(position: Int) {
+ super.onPageSelected(position)
+ tabLayout.selectTab(tabLayout.getTabAt(position))
+ }
+ })
+
+
+
return root
}
diff --git a/app/src/main/java/de/chrissthecoder/store/ui/dashboard/tabfragment/ShoppinglistFragment.kt b/app/src/main/java/de/chrissthecoder/store/ui/dashboard/tabfragment/ShoppinglistFragment.kt
new file mode 100644
index 0000000..b015a20
--- /dev/null
+++ b/app/src/main/java/de/chrissthecoder/store/ui/dashboard/tabfragment/ShoppinglistFragment.kt
@@ -0,0 +1,60 @@
+package de.chrissthecoder.store.ui.dashboard.tabfragment
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import de.chrissthecoder.store.R
+
+// TODO: Rename parameter arguments, choose names that match
+// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
+private const val ARG_PARAM1 = "param1"
+private const val ARG_PARAM2 = "param2"
+
+/**
+ * A simple [Fragment] subclass.
+ * Use the [ShoppinglistFragment.newInstance] factory method to
+ * create an instance of this fragment.
+ */
+class ShoppinglistFragment : Fragment() {
+ // TODO: Rename and change types of parameters
+ private var param1: String? = null
+ private var param2: String? = null
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ arguments?.let {
+ param1 = it.getString(ARG_PARAM1)
+ param2 = it.getString(ARG_PARAM2)
+ }
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.fragment_shoppinglist, container, false)
+ }
+
+ companion object {
+ /**
+ * Use this factory method to create a new instance of
+ * this fragment using the provided parameters.
+ *
+ * @param param1 Parameter 1.
+ * @param param2 Parameter 2.
+ * @return A new instance of fragment ShoppinglistFragment.
+ */
+ // TODO: Rename and change types and number of parameters
+ @JvmStatic
+ fun newInstance(param1: String, param2: String) =
+ ShoppinglistFragment().apply {
+ arguments = Bundle().apply {
+ putString(ARG_PARAM1, param1)
+ putString(ARG_PARAM2, param2)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/de/chrissthecoder/store/ui/dashboard/tabfragment/UnderstockFragment.kt b/app/src/main/java/de/chrissthecoder/store/ui/dashboard/tabfragment/UnderstockFragment.kt
new file mode 100644
index 0000000..890a6df
--- /dev/null
+++ b/app/src/main/java/de/chrissthecoder/store/ui/dashboard/tabfragment/UnderstockFragment.kt
@@ -0,0 +1,60 @@
+package de.chrissthecoder.store.ui.dashboard.tabfragment
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import de.chrissthecoder.store.R
+
+// TODO: Rename parameter arguments, choose names that match
+// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
+private const val ARG_PARAM1 = "param1"
+private const val ARG_PARAM2 = "param2"
+
+/**
+ * A simple [Fragment] subclass.
+ * Use the [UnderstockFragment.newInstance] factory method to
+ * create an instance of this fragment.
+ */
+class UnderstockFragment : Fragment() {
+ // TODO: Rename and change types of parameters
+ private var param1: String? = null
+ private var param2: String? = null
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ arguments?.let {
+ param1 = it.getString(ARG_PARAM1)
+ param2 = it.getString(ARG_PARAM2)
+ }
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ // Inflate the layout for this fragment
+ return inflater.inflate(R.layout.fragment_understock, container, false)
+ }
+
+ companion object {
+ /**
+ * Use this factory method to create a new instance of
+ * this fragment using the provided parameters.
+ *
+ * @param param1 Parameter 1.
+ * @param param2 Parameter 2.
+ * @return A new instance of fragment UnderstockFragment.
+ */
+ // TODO: Rename and change types and number of parameters
+ @JvmStatic
+ fun newInstance(param1: String, param2: String) =
+ UnderstockFragment().apply {
+ arguments = Bundle().apply {
+ putString(ARG_PARAM1, param1)
+ putString(ARG_PARAM2, param2)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_dashboard.xml b/app/src/main/res/layout/fragment_dashboard.xml
index 3f4fb26..cfd0619 100644
--- a/app/src/main/res/layout/fragment_dashboard.xml
+++ b/app/src/main/res/layout/fragment_dashboard.xml
@@ -7,6 +7,7 @@
tools:context=".ui.dashboard.DashboardFragment">
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_shoppinglist.xml b/app/src/main/res/layout/fragment_shoppinglist.xml
new file mode 100644
index 0000000..b45de0f
--- /dev/null
+++ b/app/src/main/res/layout/fragment_shoppinglist.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_understock.xml b/app/src/main/res/layout/fragment_understock.xml
new file mode 100644
index 0000000..d8c42d3
--- /dev/null
+++ b/app/src/main/res/layout/fragment_understock.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
\ No newline at end of file