Prechádzať zdrojové kódy

add tablayout for TabMeasureFragment

MrOzOn 5 rokov pred
rodič
commit
bb2b908da5

+ 1 - 0
feature_measure/build.gradle

@@ -64,6 +64,7 @@ dependencies {
     implementation cardview
     implementation recyclerview
     implementation material
+    implementation viewpager2
     implementation coil
     implementation coilBase
     implementation coilSvg

+ 23 - 0
feature_measure/src/main/java/com/mrozon/feature_measure/presentation/TabMeasureAdapter.kt

@@ -0,0 +1,23 @@
+package com.mrozon.feature_measure.presentation
+
+import androidx.fragment.app.Fragment
+import androidx.viewpager2.adapter.FragmentStateAdapter
+import com.mrozon.core_api.entity.MeasureType
+
+class TabMeasureAdapter(
+    fragment: Fragment,
+    private val personId: Long,
+    private val measureTypes: List<MeasureType>) : FragmentStateAdapter(fragment) {
+
+    override fun getItemCount(): Int = measureTypes.size
+
+    override fun createFragment(position: Int): Fragment {
+//        val fragment = DemoObjectFragment()
+//        fragment.arguments = Bundle().apply {
+//            // Our object is just an integer :-P
+//            putInt(ARG_OBJECT, position + 1)
+//        }
+//        return fragment
+        TODO("Not yet implemented createFragment for current Measure for current person")
+    }
+}

+ 19 - 2
feature_measure/src/main/java/com/mrozon/feature_measure/presentation/TabMeasureFragment.kt

@@ -3,16 +3,25 @@ package com.mrozon.feature_measure.presentation
 import android.content.Context
 import android.os.Bundle
 import android.view.View
+import android.widget.TableLayout
+import androidx.appcompat.app.AppCompatActivity
 import androidx.core.app.ActivityCompat
+import androidx.fragment.app.FragmentStatePagerAdapter
 import androidx.fragment.app.viewModels
 import androidx.lifecycle.Observer
 import androidx.lifecycle.ViewModelProvider
 import androidx.lifecycle.observe
+import androidx.viewpager2.adapter.FragmentStateAdapter
+import com.google.android.material.tabs.TabItem
+import com.google.android.material.tabs.TabLayout
+import com.google.android.material.tabs.TabLayout.MODE_SCROLLABLE
+import com.google.android.material.tabs.TabLayoutMediator
 import com.mrozon.core_api.entity.Gender
 import com.mrozon.feature_measure.R
 import com.mrozon.feature_measure.databinding.FragmentTabMeasureBinding
 import com.mrozon.feature_measure.di.TabMeasureFragmentComponent
 import com.mrozon.utils.base.BaseFragment
+import com.mrozon.utils.extension.setTitleActionBar
 import com.mrozon.utils.extension.visible
 import com.mrozon.utils.network.Result
 import timber.log.Timber
@@ -54,8 +63,16 @@ class TabMeasureFragment: BaseFragment<FragmentTabMeasureBinding>() {
                         if(arguments?.containsKey("id") == true)
                             arguments?.remove("id")
                         binding?.progressBar?.visible(false)
-                        show(result.data?.name!!)
-                        //TODO logic for show selected person and prepare tab items
+                        setTitleActionBar(result.data?.name!!)
+
+//                        binding?.measureTypesTabs?.tabMode = MODE_SCROLLABLE
+//                        binding?.measureTypesTabs?.addTab(TabLayout.Tab(),0)
+//                        binding?.measureTypesTabs?.addTab(TabLayout.Tab(),1)
+//                        binding?.measureTypesTabs?.addTab(TabLayout.Tab(),2)
+
+//                       TabLayoutMediator(binding?.measureTypesTabs!!, binding?.viewpager!!) { tab, position ->
+//                            tab.text = "position: $position"
+//                       }
 
                     }
                     Result.Status.ERROR -> {

+ 9 - 14
feature_measure/src/main/res/layout/fragment_tab_measure.xml

@@ -14,27 +14,22 @@
         <com.google.android.material.tabs.TabLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
+            android:id="@+id/measureTypesTabs"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent">
 
-            <com.google.android.material.tabs.TabItem
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="Monday" />
-
-            <com.google.android.material.tabs.TabItem
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="Tuesday" />
-
-            <com.google.android.material.tabs.TabItem
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="Wednesday" />
         </com.google.android.material.tabs.TabLayout>
 
+        <androidx.viewpager2.widget.ViewPager2
+            android:id="@+id/viewpager"
+            app:layout_anchor="@id/measureTypesTabs"
+            app:layout_anchorGravity="top"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            />
+
         <ProgressBar
             android:id="@+id/progressBar"
             style="?android:attr/progressBarStyle"

+ 2 - 0
scripts/deps_versions.gradle

@@ -26,6 +26,7 @@ ext {
     androidXTestVersion = "1.1.0"
     securityCryptoVersion = "1.1.0-alpha02"
     coilVersion = "1.0.0"
+    viewpager2Version = "1.0.0"
 
     // DI
     dagger = "com.google.dagger:dagger:$daggerVersion"
@@ -53,6 +54,7 @@ ext {
     cardview =  "androidx.cardview:cardview:$cardviewVersion"
     recyclerview = "androidx.recyclerview:recyclerview:$recyclerviewViersion"
     material = "com.google.android.material:material:$materialVersion"
+    viewpager2 =  "androidx.viewpager2:viewpager2:$viewpager2Version"
     // Livecycle
     lifecycleExtensions = "androidx.lifecycle:lifecycle-extensions:$lifecycleVersion"
     lifecycleLivedata = "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycleVersion"

+ 6 - 0
utils/src/main/java/com/mrozon/utils/extension/FragmentExt.kt

@@ -24,6 +24,12 @@ fun Fragment.hideKeyboard() {
     }
 }
 
+fun Fragment.setTitleActionBar(title: String){
+    if(activity is AppCompatActivity){
+        (activity as AppCompatActivity).supportActionBar?.title = title
+    }
+}
+
 fun Fragment.isActiveNetwork(): Boolean {
     val cm = context?.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
     val activeNetwork: NetworkInfo? = cm.activeNetworkInfo