From 65958bf637713c3b5efc5f3908d0c6330aa21700 Mon Sep 17 00:00:00 2001 From: lvmeng <848755140@qq.com> Date: Wed, 13 May 2026 11:13:18 +0800 Subject: [PATCH] =?UTF-8?q?feat(food):=20=E4=BC=98=E5=8C=96=E9=A3=9F?= =?UTF-8?q?=E6=9D=90=E8=AF=86=E5=88=AB=E5=8A=9F=E8=83=BD=E5=B9=B6=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E8=B0=83=E6=96=99=E9=80=89=E6=8B=A9=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将页面大小从30调整为100以提高加载效率 - 移除食材名称显示中的原始数据判断逻辑 - 在FoodRecognizeActivity中添加goodsId映射处理 - 修改GoodsItem实体类将goodsId和materId设为可变属性 - 新增oldGoodsId字段用于保存原始商品ID - 创建新的调料搜索适配器和布局文件 - 更新调料选择对话框中的数据处理逻辑 --- .../dish/match/adapter/FoodMaterialAdapter.kt | 11 +++++---- .../match/adapter/SeasoningSearchAdapter.kt | 14 +++++------ .../match/dialog/SeasoningSelectDialog.kt | 5 ++++ .../com/shuwei/dish/match/entity/GoodsItem.kt | 7 +++--- .../dish/match/ui/FoodRecognizeActivity.kt | 13 ++++++----- .../match/ui/fragment/FoodListFragment.kt | 2 +- .../main/res/layout/list_item_seasoning.xml | 23 +++++++++++++++++++ 7 files changed, 53 insertions(+), 22 deletions(-) create mode 100644 app/src/main/res/layout/list_item_seasoning.xml diff --git a/app/src/main/java/com/shuwei/dish/match/adapter/FoodMaterialAdapter.kt b/app/src/main/java/com/shuwei/dish/match/adapter/FoodMaterialAdapter.kt index 8471713..ed918d8 100644 --- a/app/src/main/java/com/shuwei/dish/match/adapter/FoodMaterialAdapter.kt +++ b/app/src/main/java/com/shuwei/dish/match/adapter/FoodMaterialAdapter.kt @@ -36,11 +36,12 @@ class FoodMaterialAdapter(list: MutableList) : clBlock.setOnClickListener { onItemClick?.invoke(holder.bindingAdapterPosition) } - if (data.isOriginalData) { - tvDishName.text = data.goodsName - } else { - tvDishName.text = data.goodsName + "-${data.rawMaterialsType}" - } + tvDishName.text = data.goodsName + //if (data.isOriginalData) { + // tvDishName.text = data.goodsName + //} else { + // tvDishName.text = data.goodsName + "-${data.rawMaterialsType}" + //} tvDishType.text = if (data.materialType == 1) "主辅材:主材" else if (data.materialType == 2) "主辅材:辅材" else "" tvDishWeight.text = if (data.useWeight == null || data.useWeight == 0.toDouble()) "" else "${data.useWeight!!.roundedOneDecimalPlace()}克" diff --git a/app/src/main/java/com/shuwei/dish/match/adapter/SeasoningSearchAdapter.kt b/app/src/main/java/com/shuwei/dish/match/adapter/SeasoningSearchAdapter.kt index 088474e..39c8b16 100644 --- a/app/src/main/java/com/shuwei/dish/match/adapter/SeasoningSearchAdapter.kt +++ b/app/src/main/java/com/shuwei/dish/match/adapter/SeasoningSearchAdapter.kt @@ -7,7 +7,7 @@ import androidx.core.content.ContextCompat import com.chad.library.adapter4.BaseQuickAdapter import com.chad.library.adapter4.viewholder.QuickViewHolder import com.shuwei.dish.match.R -import com.shuwei.dish.match.databinding.ListItemFoodBinding +import com.shuwei.dish.match.databinding.ListItemSeasoningBinding import com.shuwei.dish.match.entity.GoodsItem /** @@ -23,10 +23,6 @@ class SeasoningSearchAdapter(private var list: MutableList) : ) { holder.binding.tvGoodsInfo.run { text = item?.goodsName - setBackgroundResource( - if (item?.isClicked == true) R.drawable.shape_green_stroke - else R.drawable.shape_white_12_corners - ) setTextColor( ContextCompat.getColor( context, @@ -35,6 +31,10 @@ class SeasoningSearchAdapter(private var list: MutableList) : ) ) } + holder.binding.root.setBackgroundResource( + if (item?.isClicked == true) R.drawable.shape_green_stroke + else R.drawable.shape_white_12_corners + ) } override fun onCreateViewHolder( @@ -43,10 +43,10 @@ class SeasoningSearchAdapter(private var list: MutableList) : viewType: Int ): VH { val binding = - ListItemFoodBinding.inflate(LayoutInflater.from(context), parent, false) + ListItemSeasoningBinding.inflate(LayoutInflater.from(context), parent, false) return VH(binding) } - inner class VH(var binding: ListItemFoodBinding) : QuickViewHolder(binding.root) + inner class VH(var binding: ListItemSeasoningBinding) : QuickViewHolder(binding.root) } \ No newline at end of file diff --git a/app/src/main/java/com/shuwei/dish/match/dialog/SeasoningSelectDialog.kt b/app/src/main/java/com/shuwei/dish/match/dialog/SeasoningSelectDialog.kt index 34311c2..d50eb53 100644 --- a/app/src/main/java/com/shuwei/dish/match/dialog/SeasoningSelectDialog.kt +++ b/app/src/main/java/com/shuwei/dish/match/dialog/SeasoningSelectDialog.kt @@ -227,6 +227,11 @@ class SeasoningSelectDialog( binding.recyclerView.layoutManager = GridLayoutManager(activity, 3, GridLayoutManager.VERTICAL, false) if (pageNo == 1) list.clear() list.addAll(records) + list.forEach { + it.oldGoodsId = it.goodsId + //materId才是提交数据需要的goodsId数据 + it.goodsId = it.materId ?:"" + } adapter.notifyDataSetChanged() val isLoadMoreEnable = records.size >= PAGE_SIZE binding.refreshLayout.setEnableLoadMore(isLoadMoreEnable) diff --git a/app/src/main/java/com/shuwei/dish/match/entity/GoodsItem.kt b/app/src/main/java/com/shuwei/dish/match/entity/GoodsItem.kt index 7c0739e..240e19e 100644 --- a/app/src/main/java/com/shuwei/dish/match/entity/GoodsItem.kt +++ b/app/src/main/java/com/shuwei/dish/match/entity/GoodsItem.kt @@ -8,11 +8,11 @@ import java.io.Serializable */ data class GoodsItem( // 接口返回字段 - val goodsId: String = "", + var goodsId: String = "", val goodsName: String? = null, val popularName: String? = null, val zjmCode: String? = null, - val materId: String? = null, + var materId: String? = null, val materCode: String? = null, // 从 CookFoodGoodsEntity 迁移的数据字段(DishPartAdapter 显示及转换用) @@ -35,7 +35,8 @@ data class GoodsItem( // 净材种类(当前选中值) var rawMaterialsType: String? = null, // 净材种类候选列表(临时字段,逗号分隔,不持久化) - var rawMaterialsTypes: String? = null + var rawMaterialsTypes: String? = null, + var oldGoodsId: String? = null ) : Serializable { /** diff --git a/app/src/main/java/com/shuwei/dish/match/ui/FoodRecognizeActivity.kt b/app/src/main/java/com/shuwei/dish/match/ui/FoodRecognizeActivity.kt index 723b179..6cb3dd5 100644 --- a/app/src/main/java/com/shuwei/dish/match/ui/FoodRecognizeActivity.kt +++ b/app/src/main/java/com/shuwei/dish/match/ui/FoodRecognizeActivity.kt @@ -289,15 +289,16 @@ class FoodRecognizeActivity : BaseActivity() { binding.rvRecognizeList.visible() binding.tvNoData.gone() list.clear() - goodsList.forEach { + goodsList.forEach { goods -> var foodScore = -1 - nameScoreMap[it.goodsName]?.let { food -> + nameScoreMap[goods.goodsName]?.let { food -> foodScore = ((1 - food.score) * 10000).toInt() } -// // 将接口返回的 rawMaterialsType(全部种类)移存到 rawMaterialsTypes,供弹窗使用 -// it.rawMaterialsTypes = it.rawMaterialsType -// it.rawMaterialsType = null - list.add(it.also { it.foodScore = foodScore }) + //保存原goodsId + goods.oldGoodsId = goods.goodsId + //PrepareFoodActivity中的goodsId就是materId + goods.goodsId = goods.materId ?:"" + list.add(goods.also { it.foodScore = foodScore }) } adapter.notifyDataSetChanged() updateRvParentLayoutHeight() diff --git a/app/src/main/java/com/shuwei/dish/match/ui/fragment/FoodListFragment.kt b/app/src/main/java/com/shuwei/dish/match/ui/fragment/FoodListFragment.kt index 8d43c79..dbc53b9 100644 --- a/app/src/main/java/com/shuwei/dish/match/ui/fragment/FoodListFragment.kt +++ b/app/src/main/java/com/shuwei/dish/match/ui/fragment/FoodListFragment.kt @@ -47,7 +47,7 @@ class FoodListFragment : BaseFragment() { } private var pageNo = 1 - private val pageSize = 30 + private val pageSize = 100 private var dinnerType = "0" diff --git a/app/src/main/res/layout/list_item_seasoning.xml b/app/src/main/res/layout/list_item_seasoning.xml new file mode 100644 index 0000000..ec09bb8 --- /dev/null +++ b/app/src/main/res/layout/list_item_seasoning.xml @@ -0,0 +1,23 @@ + + + + + + \ No newline at end of file