Selaa lähdekoodia

2024-04-28 修改

修改

1. 地接费用录入详情界面逻辑和适配器修改,减少界面卡顿
zhaiy 11 kuukautta sitten
vanhempi
commit
a61235f06c

+ 29 - 27
app/src/main/java/com/pan_american/android/data/model/group_op/ground_convey_payment_insert/adapter/GroundConveyTableAdapter.kt

@@ -4,7 +4,6 @@ import android.text.Editable
 import android.text.TextWatcher
 import android.view.LayoutInflater
 import android.view.View
-import android.view.View.OnFocusChangeListener
 import android.view.ViewGroup
 import android.widget.EditText
 import android.widget.LinearLayout
@@ -144,41 +143,44 @@ class GroundConveyTableAdapter(private val itemList: ArrayList<GroundConveyTable
     override fun getItemCount() = itemList.size
 
     override fun onBindViewHolder(holder: ViewHolder, position: Int) {
-        val item = itemList[holder.bindingAdapterPosition]
-        holder.paymentItemName.text = item.sidName
-        holder.price.setText(item.price.toString())
-        holder.priceUnit.text = item.currencyStr
-        holder.count.setText(item.count.toString())
-
-        for (checkedItem in OASystem.unitList) {
-            if (checkedItem.id == item.units) {
-                holder.unit.text = checkedItem.name
-            }
-        }
-
-        holder.date.text = item.datePrice.substring(0, 10)
-        holder.detail.setText(item.priceContent)
 
-        holder.price.filters = arrayOf(MoneyInputFilter())
+        val item = itemList[holder.bindingAdapterPosition]
 
         if (!item.isVisible) {
-            holder.listItem.visibility = View.GONE
+            return
         } else {
             holder.listItem.visibility = View.VISIBLE
-        }
+            holder.paymentItemName.text = item.sidName
+            holder.price.setText(item.price.toString())
+            holder.priceUnit.text = item.currencyStr
+            holder.count.setText(item.count.toString())
+
+            for (checkedItem in OASystem.unitList) {
+                if (checkedItem.id == item.units) {
+                    holder.unit.text = checkedItem.name
+                }
+            }
 
-        holder.price.onFocusChangeListener = OnFocusChangeListener { _, flag ->
-            if (!flag) {
-                if (holder.price.text.isNullOrBlank()) {
-                    holder.price.setText(item.price.toString())
+            holder.listItem.visibility = View.VISIBLE
+
+            holder.date.text = item.datePrice.substring(0, 10)
+            holder.detail.setText(item.priceContent)
+
+            holder.price.filters = arrayOf(MoneyInputFilter())
+
+            holder.price.onFocusChangeListener = View.OnFocusChangeListener { _, flag ->
+                if (!flag) {
+                    if (holder.price.text.isNullOrBlank()) {
+                        holder.price.setText(item.price.toString())
+                    }
                 }
             }
-        }
 
-        holder.count.onFocusChangeListener = OnFocusChangeListener { _, flag ->
-            if (!flag) {
-                if (holder.count.text.isNullOrBlank()) {
-                    holder.count.setText(item.count.toString())
+            holder.count.onFocusChangeListener = View.OnFocusChangeListener { _, flag ->
+                if (!flag) {
+                    if (holder.count.text.isNullOrBlank()) {
+                        holder.count.setText(item.count.toString())
+                    }
                 }
             }
         }

+ 7 - 1
app/src/main/java/com/pan_american/android/ui/group_op/ground_convey_payment_insert/GroundConveyPaymentDetailActivity.kt

@@ -119,7 +119,6 @@ class GroundConveyPaymentDetailActivity : BaseActivity<ActivityGroundConveyPayme
 
         //2024-04-28 新增OP费用录入详情审核通过后无法再进行修改
         headerAdapter.setCanBeEdit(canBeEdit())
-        adapter.setCanBeEdit(canBeEdit())
         footerAdapter.setCanBeEdit(canBeEdit())
 
         initList()
@@ -330,8 +329,13 @@ class GroundConveyPaymentDetailActivity : BaseActivity<ActivityGroundConveyPayme
 
     private fun initList() {
         val layoutManager = LinearLayoutManager(OASystem.context)
+
+        layoutManager.initialPrefetchItemCount = 5
+
         binding.paymentList.layoutManager = layoutManager
 
+        binding.paymentList.setItemViewCacheSize(50)
+
         headerAdapter.onItemClick = object : GroundConveyHeaderAdapter.OnItemClick {
             override fun onCurrencyCodeClick() {
                 showSelector {
@@ -453,6 +457,8 @@ class GroundConveyPaymentDetailActivity : BaseActivity<ActivityGroundConveyPayme
         }
 
         adapter = GroundConveyTableAdapter(carTouristGuides)
+        adapter.setCanBeEdit(canBeEdit())
+        adapter.setHasStableIds(true)
 
         adapter.onItemTextChanged =
             object : GroundConveyTableAdapter.OnItemTextChanged {

+ 2 - 1
app/src/main/res/layout/item_ground_convey_table.xml

@@ -11,7 +11,8 @@
         android:layout_height="wrap_content"
         android:layout_margin="@dimen/common_padding"
         android:background="@drawable/shape_corner_white"
-        android:orientation="vertical">
+        android:orientation="vertical"
+        android:visibility="gone">
 
         <LinearLayout
             android:layout_width="match_parent"