Эх сурвалжийг харах

ExpandableTabLayout逻辑和显示调整;物资取还页适配ExpandableTabLayout

Frankensteinly 8 сар өмнө
parent
commit
4b9c3a7650

+ 1 - 1
app/src/main/java/com/grkj/iscs_mc/util/NetApi.kt

@@ -704,7 +704,7 @@ object NetApi {
                 res?.let {
                     callBack.invoke(getRefBean(it))
                 }
-            }, isGet = true, isAuth= true
+            }, isGet = true, isAuth = true
         )
     }
 }

+ 19 - 0
app/src/main/java/com/grkj/iscs_mc/view/fragment/MaterialFetchReturnFragment.kt

@@ -3,9 +3,11 @@ package com.grkj.iscs_mc.view.fragment
 import com.grkj.iscs_mc.R
 import com.grkj.iscs_mc.databinding.FragmentMaterialFetchReturnBinding
 import com.grkj.iscs_mc.extentions.navigateUp
+import com.grkj.iscs_mc.model.vo.MaterialListRespVO
 import com.grkj.iscs_mc.view.base.BaseMvpFragment
 import com.grkj.iscs_mc.view.iview.IMaterialFetchReturnView
 import com.grkj.iscs_mc.view.presenter.MaterialFetchReturnPresenter
+import com.grkj.iscs_mc.view.widget.ExpandableTabLayout
 import com.zhy.adapter.recyclerview.CommonAdapter
 import com.zhy.adapter.recyclerview.base.ViewHolder
 
@@ -15,6 +17,8 @@ import com.zhy.adapter.recyclerview.base.ViewHolder
 class MaterialFetchReturnFragment :
     BaseMvpFragment<IMaterialFetchReturnView, MaterialFetchReturnPresenter, FragmentMaterialFetchReturnBinding>() {
 
+    private var mMaterialList: MutableList<MaterialListRespVO>? = null
+
     override val viewBinding: FragmentMaterialFetchReturnBinding
         get() = FragmentMaterialFetchReturnBinding.inflate(layoutInflater)
 
@@ -27,6 +31,21 @@ class MaterialFetchReturnFragment :
 
             }
         }
+
+        mBinding?.etlType?.setOnSelectListener(object : ExpandableTabLayout.OnSelectListener{
+            override fun onSelect(position: Int) {
+
+            }
+        })
+
+        presenter?.getMaterialList {
+            mMaterialList = it
+            val list = mutableListOf<ExpandableTabLayout.ItemData>()
+            it?.forEach { itData ->
+                list.add(ExpandableTabLayout.ItemData(itData.materialsTypeName, R.mipmap.safety_helmet))
+            }
+            mBinding?.etlType?.setData(list)
+        }
     }
 
     override fun initPresenter(): MaterialFetchReturnPresenter {

+ 6 - 2
app/src/main/java/com/grkj/iscs_mc/view/presenter/MaterialFetchReturnPresenter.kt

@@ -1,14 +1,18 @@
 package com.grkj.iscs_mc.view.presenter
 
+import com.grkj.iscs_mc.model.vo.MaterialListRespVO
+import com.grkj.iscs_mc.util.Executor
 import com.grkj.iscs_mc.util.NetApi
 import com.grkj.iscs_mc.view.base.BasePresenter
 import com.grkj.iscs_mc.view.iview.IMaterialFetchReturnView
 
 class MaterialFetchReturnPresenter : BasePresenter<IMaterialFetchReturnView>() {
 
-    fun getMaterialList() {
+    fun getMaterialList(callBack: (MutableList<MaterialListRespVO>?) -> Unit) {
         NetApi.getMaterialList(1) {
-            println("haha : $it")
+            Executor.runOnMain {
+                callBack(it)
+            }
         }
     }
 }

+ 35 - 8
app/src/main/java/com/grkj/iscs_mc/view/widget/ExpandableTabLayout.kt

@@ -28,6 +28,10 @@ class ExpandableTabLayout(private val ctx: Context, attrs: AttributeSet) :
 
     private var mBinding: LayoutExpandableTabLayoutBinding
     private var isCollapse = true
+    private var mDataList = mutableListOf<ItemData>()
+    private var mOnSelectListener: OnSelectListener? = null
+    private var isInteractive = false
+    private var mSelectIndex = 0
 
     init {
         val root = View.inflate(ctx, R.layout.layout_expandable_tab_layout, this)
@@ -40,8 +44,8 @@ class ExpandableTabLayout(private val ctx: Context, attrs: AttributeSet) :
             mBinding.ivAction.rotation = 180f
         }
 
-        val interactive = attrSet.getBoolean(R.styleable.ExpandableTabLayout_interactive, true)
-        // TODO tab下划线
+        // 是否要联动下划线
+        isInteractive = attrSet.getBoolean(R.styleable.ExpandableTabLayout_interactive, false)
 
         val title = attrSet.getString(R.styleable.ExpandableTabLayout_expand_title)
         title?.let {
@@ -53,17 +57,24 @@ class ExpandableTabLayout(private val ctx: Context, attrs: AttributeSet) :
         attrSet.recycle()
 
         mBinding.rvTab.adapter =
-            object : CommonAdapter<String>(
+            object : CommonAdapter<ItemData>(
                 ctx,
                 R.layout.item_rv_expandable_tab,
 //                mutableListOf("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56","57", "58", "59", "60", "61")
-                mutableListOf()
+                mDataList
             ) {
-                override fun convert(holder: ViewHolder, t: String, position: Int) {
-                    holder.getView<ImageView>(R.id.iv_icon).setImageResource(R.mipmap.safety_helmet)
-                    holder.setText(R.id.tv_name, "安全帽($t)")
+                override fun convert(holder: ViewHolder, data: ItemData, position: Int) {
+                    holder.setVisible(R.id.iv_indicator, isInteractive && position == mSelectIndex)
+                    data.icon?.let {
+                        holder.getView<ImageView>(R.id.iv_icon).setImageResource(it)
+                    }
+                    data.title?.let {
+                        holder.setText(R.id.tv_name, it)
+                    }
                     holder.setOnClickListener(R.id.root) {
-                        ToastUtils.tip("点击了$t")
+                        mOnSelectListener?.onSelect(position)
+                        mBinding.rvTab.adapter?.notifyDataSetChanged()
+                        mSelectIndex = position
                     }
                 }
             }
@@ -96,4 +107,20 @@ class ExpandableTabLayout(private val ctx: Context, attrs: AttributeSet) :
             mBinding.ivAction.rotation = if (isCollapse) 0f else 180f
         }
     }
+
+    fun setData(list: MutableList<ItemData>) {
+        mDataList.clear()
+        mDataList.addAll(list)
+        mBinding.rvTab.adapter?.notifyDataSetChanged()
+    }
+
+    fun setOnSelectListener(onSelectListener: OnSelectListener) {
+        mOnSelectListener = onSelectListener
+    }
+
+    interface OnSelectListener {
+        fun onSelect(position: Int)
+    }
+
+    data class ItemData(val title: String?, val icon: Int?)
 }

+ 10 - 4
app/src/main/res/layout/fragment_material_fetch_return.xml

@@ -22,18 +22,24 @@
         app:btn_bg="@drawable/common_btn_blue_bg"
         app:btn_name="@string/back" />
 
-    <LinearLayout
+    <RelativeLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_above="@id/cb_back"
         android:layout_below="@id/tb"
-        android:layout_marginVertical="@dimen/common_spacing"
-        android:orientation="horizontal">
+        android:layout_marginVertical="@dimen/common_spacing">
 
         <androidx.recyclerview.widget.RecyclerView
             android:id="@+id/rv_fetch_return"
             style="@style/CommonRecyclerView"
+            android:layout_marginTop="@dimen/expandable_tab_collapse_height"
             app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
             app:spanCount="6" />
-    </LinearLayout>
+
+        <com.grkj.iscs_mc.view.widget.ExpandableTabLayout
+            android:id="@+id/etl_type"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/expandable_tab_collapse_height"
+            app:interactive="true" />
+    </RelativeLayout>
 </RelativeLayout>