From 7ac095c56e99ef21f9ca55af2853c12940eda187 Mon Sep 17 00:00:00 2001 From: lvmeng <848755140@qq.com> Date: Tue, 16 Sep 2025 14:35:49 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AE=BE=E5=A4=87=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=8F=90=E4=BA=A4=E8=8F=9C=E5=93=81=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=88=B7=E6=96=B0=E5=92=8C=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE=E3=80=81=E6=9C=AA=E9=85=8D=E7=BD=AE=E8=B0=83?= =?UTF-8?q?=E6=96=99=E5=A2=9E=E5=8A=A0=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dish/match/adapter/TextCellAdapter.kt | 55 +- .../shuwei/dish/match/base/BaseFragment.kt | 20 +- .../shuwei/dish/match/dialog/CommonDialog.kt | 5 +- .../shuwei/dish/match/dialog/DialogTool.kt | 64 ++- .../shuwei/dish/match/dialog/LoadingDialog.kt | 12 +- .../com/shuwei/dish/match/http/HttpUtil.kt | 14 +- .../dish/match/ui/DeviceConfigActivity.kt | 37 +- .../dish/match/ui/DeviceSettingActivity.kt | 246 --------- .../com/shuwei/dish/match/ui/HomeActivity.kt | 22 +- .../com/shuwei/dish/match/ui/InitActivity.kt | 22 +- .../dish/match/ui/SamplingListActivity.kt | 141 ++++-- .../dish/match/ui/SelectDishActivity.kt | 57 ++- .../dish/match/ui/SubmitDishActivity.kt | 429 ---------------- .../dish/match/ui/SubmitFoodActivity.kt | 62 ++- .../match/ui/fragment/DishListFragment.kt | 63 +-- .../match/ui/fragment/DishSamplingFragment.kt | 187 ------- .../match/ui/fragment/SamplingListFragment.kt | 254 ---------- .../shuwei/dish/match/utils/AddressUtil.kt | 12 +- app/src/main/res/drawable/bg_oval.xml | 5 + app/src/main/res/layout/layout_grid.xml | 477 +++++++++++++----- 20 files changed, 716 insertions(+), 1468 deletions(-) delete mode 100644 app/src/main/java/com/shuwei/dish/match/ui/DeviceSettingActivity.kt delete mode 100644 app/src/main/java/com/shuwei/dish/match/ui/SubmitDishActivity.kt delete mode 100644 app/src/main/java/com/shuwei/dish/match/ui/fragment/DishSamplingFragment.kt delete mode 100644 app/src/main/java/com/shuwei/dish/match/ui/fragment/SamplingListFragment.kt create mode 100644 app/src/main/res/drawable/bg_oval.xml diff --git a/app/src/main/java/com/shuwei/dish/match/adapter/TextCellAdapter.kt b/app/src/main/java/com/shuwei/dish/match/adapter/TextCellAdapter.kt index f659318..4437834 100644 --- a/app/src/main/java/com/shuwei/dish/match/adapter/TextCellAdapter.kt +++ b/app/src/main/java/com/shuwei/dish/match/adapter/TextCellAdapter.kt @@ -9,6 +9,7 @@ import android.text.style.LineHeightSpan import android.text.style.StyleSpan import android.view.LayoutInflater import android.view.ViewGroup +import android.widget.FrameLayout import android.widget.TextView import androidx.core.content.ContextCompat import androidx.core.graphics.toColorInt @@ -68,35 +69,39 @@ class TextCellAdapter(var list: MutableList) : var onCellClick: ((positon: Int) -> Unit)? = null companion object { + fun loadLayout(frameLayout: FrameLayout, item: SeasoningEntity) { + val child: TextView = frameLayout.getChildAt(0) as TextView + child.text = getTextSpan(item) + } fun loadCell(tvCell: TextView, item: SeasoningEntity) { tvCell.text = getTextSpan(item) } - fun loadCell2(tvCell: TextView, item: SeasoningEntity) { - if (item.goodsName.isNullOrBlank()) { - tvCell.run { - text = buildSpannableString { - appendText( - "未配置", - ForegroundColorSpan("#999999".toColorInt()), - StyleSpan(Typeface.BOLD), - AbsoluteSizeSpan(28, true), - LineHeightSpan { text, start, end, spanstartv, v, fm -> - fm.descent += 10.dp // 增加行间距 - } - )} - //setTextColor(ContextCompat.getColor(context, R.color.black999)) - } - } else { -// if (item.pageType == 1) { -// tvCell.run { -// text = item.goodsName -// setTextColor(ContextCompat.getColor(context, R.color.black)) -// } -// } else { - tvCell.text = getTextSpan(item) +// fun loadCell2(tvCell: TextView, item: SeasoningEntity) { +// if (item.goodsName.isNullOrBlank()) { +// tvCell.run { +// text = buildSpannableString { +// appendText( +// "未配置", +// ForegroundColorSpan("#999999".toColorInt()), +// StyleSpan(Typeface.BOLD), +// AbsoluteSizeSpan(28, true), +// LineHeightSpan { text, start, end, spanstartv, v, fm -> +// fm.descent += 10.dp // 增加行间距 +// } +// )} +// //setTextColor(ContextCompat.getColor(context, R.color.black999)) // } - } - } +// } else { +//// if (item.pageType == 1) { +//// tvCell.run { +//// text = item.goodsName +//// setTextColor(ContextCompat.getColor(context, R.color.black)) +//// } +//// } else { +// tvCell.text = getTextSpan(item) +//// } +// } +// } fun getTextSpan(item: SeasoningEntity): SpannableStringBuilder { val endIndex = if (item.sort == 9) 10 else 6 diff --git a/app/src/main/java/com/shuwei/dish/match/base/BaseFragment.kt b/app/src/main/java/com/shuwei/dish/match/base/BaseFragment.kt index 2167f3a..9ffba32 100644 --- a/app/src/main/java/com/shuwei/dish/match/base/BaseFragment.kt +++ b/app/src/main/java/com/shuwei/dish/match/base/BaseFragment.kt @@ -1,9 +1,25 @@ package com.shuwei.dish.match.base +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup import androidx.fragment.app.Fragment +import androidx.viewbinding.ViewBinding -open class BaseFragment : Fragment() { +abstract class BaseFragment : Fragment() { + private var _binding: VB? = null + protected val binding get() = _binding!! + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + _binding = inflateBinding(inflater, container) + return binding.root + } + abstract fun inflateBinding(inflater: LayoutInflater, container: ViewGroup?): VB -} \ No newline at end of file + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } +} diff --git a/app/src/main/java/com/shuwei/dish/match/dialog/CommonDialog.kt b/app/src/main/java/com/shuwei/dish/match/dialog/CommonDialog.kt index 4700fe5..cb49c03 100644 --- a/app/src/main/java/com/shuwei/dish/match/dialog/CommonDialog.kt +++ b/app/src/main/java/com/shuwei/dish/match/dialog/CommonDialog.kt @@ -2,6 +2,7 @@ package com.shuwei.dish.match.dialog import android.app.Activity import android.app.Dialog +import android.content.Context import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.view.View @@ -14,8 +15,8 @@ import com.shuwei.dish.match.utils.ext.dp import java.lang.ref.WeakReference open class CommonDialog( - private var activity: FragmentActivity -) : Dialog(activity) { + context: Context +) : Dialog(context) { private lateinit var binding: DialogCommonBinding diff --git a/app/src/main/java/com/shuwei/dish/match/dialog/DialogTool.kt b/app/src/main/java/com/shuwei/dish/match/dialog/DialogTool.kt index 4ea6284..8e69921 100644 --- a/app/src/main/java/com/shuwei/dish/match/dialog/DialogTool.kt +++ b/app/src/main/java/com/shuwei/dish/match/dialog/DialogTool.kt @@ -1,26 +1,38 @@ -//package com.shuwei.dish.match.dialog -// -//import android.content.Context -//import android.view.LayoutInflater -//import androidx.fragment.app.FragmentActivity -//import com.shuwei.dish.match.databinding.LayoutFoodRemindBinding -// -//object DialogTool { -// -// fun load(activity: FragmentActivity, leftText:) { -// val layoutInflater = LayoutInflater.from(activity) -// val remindBinding = LayoutFoodRemindBinding.inflate(layoutInflater) -// CommonDialog(activity).apply { -// messageView = remindBinding.root -// leftText = "返回调整" -// rightText = "确认无误" -// onLeftClick = { dismiss() } -// onRightClick = { -// goToSubmit() -// dismiss() -// } -// onDismiss = { hideStatusBar() } -// }.show() -// } -// -//} \ No newline at end of file +package com.shuwei.dish.match.dialog + +import android.content.Context +import android.view.LayoutInflater +import com.shuwei.dish.match.databinding.LayoutFoodRemindBinding + +object DialogTool { + + fun load( + context: Context, + title:String, + content:String, + leftBtnText: String, + rightBtnText: String, + leftBtnClick: () -> Unit = {}, + rightBtnClick: () -> Unit = {} + ) { + val layoutInflater = LayoutInflater.from(context) + val remindBinding = LayoutFoodRemindBinding.inflate(layoutInflater) + remindBinding.tvDialogTitle.text = title + remindBinding.tvDialogContent.text = content + CommonDialog(context).apply { + messageView = remindBinding.root + leftText = leftBtnText + rightText = rightBtnText + onLeftClick = { + leftBtnClick() + dismiss() + } + onRightClick = { + rightBtnClick() + dismiss() + } + onDismiss = { } + }.show() + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/shuwei/dish/match/dialog/LoadingDialog.kt b/app/src/main/java/com/shuwei/dish/match/dialog/LoadingDialog.kt index 90a3151..99ccb78 100644 --- a/app/src/main/java/com/shuwei/dish/match/dialog/LoadingDialog.kt +++ b/app/src/main/java/com/shuwei/dish/match/dialog/LoadingDialog.kt @@ -29,12 +29,16 @@ object Loading { } fun dismiss() { - dialog?.let { - if (it.isShowing) { - it.dismiss() + try { + dialog?.let { + if (it.isShowing) { + it.dismiss() + } } + dialog = null + } catch (e: Exception) { + e.printStackTrace() } - dialog = null } } diff --git a/app/src/main/java/com/shuwei/dish/match/http/HttpUtil.kt b/app/src/main/java/com/shuwei/dish/match/http/HttpUtil.kt index 9ec9393..f137520 100644 --- a/app/src/main/java/com/shuwei/dish/match/http/HttpUtil.kt +++ b/app/src/main/java/com/shuwei/dish/match/http/HttpUtil.kt @@ -1,21 +1,15 @@ package com.shuwei.dish.match.http -import android.annotation.SuppressLint import android.os.Handler import android.os.Looper import android.util.Log import com.google.gson.reflect.TypeToken import com.shuwei.dish.match.base.BaseApp import com.shuwei.dish.match.base.BaseReq -import com.shuwei.dish.match.http.HttpUtil.runMainThread import com.shuwei.dish.match.utils.SpTool -import com.shuwei.dish.match.utils.ext.put import com.shuwei.dish.match.utils.ext.toType -import com.shuwei.dish.match.utils.ext.toast -import kotlinx.coroutines.Runnable import okhttp3.Call import okhttp3.Callback -import okhttp3.HttpUrl import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.Request import okhttp3.RequestBody.Companion.toRequestBody @@ -41,7 +35,7 @@ object HttpUtil { doFailure: (code: Int?, msg: String?) -> Unit ) { val request = Request.Builder() - .url(url) + .url(if (url.isHttpApi()) url else UrlConfig.BASE_URL + url) .apply { if (header != null) { header.forEach { @@ -111,7 +105,7 @@ object HttpUtil { .toRequestBody("application/json; charset=utf-8".toMediaTypeOrNull()) val token = getToken() Request.Builder() - .url(url) + .url(if (url.isHttpApi()) url else UrlConfig.BASE_URL + url) .apply { if (token.isNotBlank()) { addHeader("X-Access-Token", token) @@ -197,4 +191,6 @@ object HttpUtil { } -} \ No newline at end of file +} + +fun String.isHttpApi() = this.startsWith("http://") || this.startsWith("https://") diff --git a/app/src/main/java/com/shuwei/dish/match/ui/DeviceConfigActivity.kt b/app/src/main/java/com/shuwei/dish/match/ui/DeviceConfigActivity.kt index ef1293f..650c784 100644 --- a/app/src/main/java/com/shuwei/dish/match/ui/DeviceConfigActivity.kt +++ b/app/src/main/java/com/shuwei/dish/match/ui/DeviceConfigActivity.kt @@ -7,7 +7,9 @@ import android.text.style.AbsoluteSizeSpan import android.text.style.ForegroundColorSpan import android.text.style.LineHeightSpan import android.text.style.StyleSpan +import android.util.Log import android.util.SparseIntArray +import android.widget.FrameLayout import android.widget.TextView import androidx.core.graphics.toColorInt import androidx.core.view.forEach @@ -137,22 +139,24 @@ class DeviceConfigActivity : BaseActivity() { private fun addWeighListener() { WeightUtil.addWeightListener { address, state, weight -> +// Log.d(TAG, "addWeighListener: address=$address,stat=$state,weight=$weight") weightArray.put(address, weight) val item = seasoningItems.firstOrNull { address == addressArray[it.sort]} - item?.useWeight = weight.toDouble() - setGridData(seasoningItems) + item?.let { + it.useWeight = weight.toDouble() + updateGridData(it) + } + //setGridData(seasoningItems) } } private var seasoningItems = mutableListOf() private fun addGridItemListener() { binding.include.root.forEach { child -> - (child as TextView).run { - clickWithDebounce { - val sort = tag.toString().toInt() - val entity = seasoningItems.firstOrNull { it.sort == sort } ?: SeasoningEntity() - clickGridItem(sort, entity) - } + child.clickWithDebounce { + val sort = child.tag.toString().toInt() + val entity = seasoningItems.firstOrNull { it.sort == sort } ?: SeasoningEntity() + clickGridItem(sort, entity) } } } @@ -224,11 +228,18 @@ class DeviceConfigActivity : BaseActivity() { val gridLayout = binding.include.root list.forEach { entity -> val tag = entity.sort.toString() - val child = gridLayout.findViewWithTag(tag) - TextCellAdapter.loadCell(child, entity) + val frameLayout = gridLayout.findViewWithTag(tag) + TextCellAdapter.loadLayout(frameLayout , entity) } } + private fun updateGridData(entity:SeasoningEntity) { + val gridLayout = binding.include.root + val tag = entity.sort.toString() + val frameLayout = gridLayout.findViewWithTag(tag) + TextCellAdapter.loadLayout(frameLayout , entity) + } + private fun clickGridItem(sort: Int, entity: SeasoningEntity) { val currentAddress = AddressUtil.getWeighAddressArray().get(sort) // val seasoningEntity = list.first{it.sort == sort} @@ -242,8 +253,10 @@ class DeviceConfigActivity : BaseActivity() { entity.materialType = 3 entity.sort = sort saveSeasoning(entity) { - val child = binding.include.root.findViewWithTag(sort.toString()) - TextCellAdapter.loadCell(child, entity) + val tag = sort.toString() + val gridLayout = binding.include.root + val frameLayout = gridLayout.findViewWithTag(tag) + TextCellAdapter.loadLayout(frameLayout, entity) } } } diff --git a/app/src/main/java/com/shuwei/dish/match/ui/DeviceSettingActivity.kt b/app/src/main/java/com/shuwei/dish/match/ui/DeviceSettingActivity.kt deleted file mode 100644 index aefdb81..0000000 --- a/app/src/main/java/com/shuwei/dish/match/ui/DeviceSettingActivity.kt +++ /dev/null @@ -1,246 +0,0 @@ -//package com.shuwei.dish.match.ui -// -//import android.graphics.Typeface -//import android.os.Bundle -//import android.text.SpannableStringBuilder -//import android.text.style.AbsoluteSizeSpan -//import android.text.style.ForegroundColorSpan -//import android.text.style.LineHeightSpan -//import android.text.style.StyleSpan -//import androidx.core.graphics.toColorInt -//import androidx.lifecycle.ViewModelProvider -//import com.shuwei.dish.match.adapter.SeasoningCellTool -//import com.shuwei.dish.match.base.BaseActivity -//import com.shuwei.dish.match.base.BaseApp -//import com.shuwei.dish.match.databinding.ActivityDeviceSettingBinding -//import com.shuwei.dish.match.databinding.LayoutFoodRemindBinding -//import com.shuwei.dish.match.db.AppRepository -//import com.shuwei.dish.match.dialog.CommonDialog -//import com.shuwei.dish.match.entity.SeasoningEntity -//import com.shuwei.dish.match.entity.ResetReasoningRecord -//import com.shuwei.dish.match.utils.DataUtil -//import com.shuwei.dish.match.utils.JsonAssetsLoader -//import com.shuwei.dish.match.utils.MultiClickDetector -//import com.shuwei.dish.match.utils.WeightUtil -//import com.shuwei.dish.match.utils.ext.appendText -//import com.shuwei.dish.match.utils.ext.buildSpannableString -//import com.shuwei.dish.match.utils.ext.dp -//import com.shuwei.dish.match.utils.ext.startActivity -//import com.shuwei.dish.match.utils.ext.toast -//import com.shuwei.dish.match.utils.ext.visible -//import com.shuwei.dish.match.viewmodel.AppViewModel -//import com.shuwei.dish.match.viewmodel.factory.AppFactory -//import com.shuwei.dish.match.R -// -//class DeviceSettingActivity : BaseActivity() { -// -// companion object { -// -// const val TAG = "DeviceSettingActivity" -// -// const val COOK_MODE = "cookMode" -// -// val modeList = listOf( -// ModeBean("制作模式", "菜品快速制作,记录熟重"), -// ModeBean("采样模式", "菜品快速制作,记录熟重"), -// ModeBean("品控模式", "菜品快速制作,记录熟重") -// ) -// } -// -// data class ModeBean( -// var modeName: String, -// var modeDesc: String -// ) -// -// private lateinit var binding: ActivityDeviceSettingBinding -// -// private lateinit var appViewModel: AppViewModel -// -// private var cookMode: Int = 0 -// -// override fun onCreate(savedInstanceState: Bundle?) { -// super.onCreate(savedInstanceState) -// binding = ActivityDeviceSettingBinding.inflate(layoutInflater) -// setContentView(binding.root) -// cookMode = intent.getIntExtra(COOK_MODE, 0) -// initViewModel() -// setHeaderBackground() -// setTitleBar(titleBarAction = { -// it.visible() -// }, titleAction = { -// it.text = "设备配置" -// }, rightIconActon = { -// it.visible() -// it.alpha = 0.0F -// it.setImageResource(R.drawable.ic_setting) -// it.setOnClickListener { -//// appViewModel.clearAllSeasoning{ -//// loadSeasoning() -//// } -// detector.setOnDelayedMultiClickListener(it) { -// defaultDataSettingDialog() -// } -// } -// }) -// -// loadQualitySpan(isEnable = false) -// when (cookMode) { -// 1 -> { -// binding.rbModeCook.isChecked = true -// binding.rbModeSampling.isChecked = false -// loadCookSpan(isClicked = true) -// loadSamplingSpan() -// } -// -// 2 -> { -// binding.rbModeCook.isChecked = false -// binding.rbModeSampling.isChecked = true -// loadCookSpan() -// loadSamplingSpan(isClicked = true) -// } -// -// else -> 0 -// } -// -// binding.rbModeCook.setOnClickListener { -// binding.rbModeCook.isChecked = true -// binding.rbModeSampling.isChecked = false -// loadCookSpan(isClicked = true) -// loadSamplingSpan() -// startActivity { } -// finish() -// } -// binding.rbModeSampling.setOnClickListener { -// binding.rbModeCook.isChecked = false -// binding.rbModeSampling.isChecked = true -// loadCookSpan() -// loadSamplingSpan(isClicked = true) -// startActivity { } -// finish() -// } -// } -// -// val detector = MultiClickDetector(targetCount = 10, intervalMs = 800) -// -// private fun defaultDataSettingDialog() { -// val remindBinding = LayoutFoodRemindBinding.inflate(layoutInflater) -// remindBinding.tvDialogTitle.text = "温馨提示" -// remindBinding.tvDialogContent.text = "您好,使用默认配置作为您的调料数据,则已有配置将被清除,确认吗?" -// CommonDialog(this).apply { -// messageView = remindBinding.root -// leftText = "取消" -// rightText = "确认" -// onLeftClick = { dismiss() } -// onRightClick = { -// dismiss() -// resetList() -// } -// onDismiss = { hideStatusBar() } -// }.show() -// } -// -// private fun resetList() { -// runCatching { -// val record = JsonAssetsLoader.parseJsonFromAssets(this,"default_seasoning_list.json") -// val addressArray = DataUtil.getWeighAddressArray() -// val weightArray = WeightUtil.weightArray -// appViewModel.clearAllSeasoning { -// record?.list?.forEach { entity -> -// entity.useWeight = weightArray[addressArray[entity.sort]].toDouble() -// appViewModel.saveSeasoning(entity){} -// } -// loadSeasoning() -// } -// }.onFailure { it.printStackTrace() } -// } -// -// private fun initViewModel() { -// val db = BaseApp.instance!!.database -// val factory = -// AppFactory(AppRepository(db.appDao())) -// appViewModel = -// ViewModelProvider(this, factory)[AppViewModel::class.java] -// } -// -// override fun onResume() { -// super.onResume() -// loadSeasoning() -// } -// -// private fun loadSeasoning() { -// appViewModel.loadSeasoning { it -> -// SeasoningCellTool.loadData( -// activity = this, -// initList = it, -// recyclerView = binding.rvSeasoning, -// tvCell = binding.tvRightBottomCell, -// pageType = 1 -// ) -// } -// } -// -// -// private fun loadQualitySpan(isClicked: Boolean = false, isEnable: Boolean = true) { -// binding.rbModeQuality.text = -// getModeTextSpan( -// topText = modeList[2].modeName, -// bottomText = modeList[2].modeDesc, -// topColor = if (isEnable) if (isClicked) "#00BC71" else "#000000" else "#B4B4B4", -// bottomColor = if (isEnable) "#8B8B8B" else "#B4B4B4" -// ) -// } -// -// private fun loadSamplingSpan(isClicked: Boolean = false, isEnable: Boolean = true) { -// binding.rbModeSampling.text = -// getModeTextSpan( -// topText = modeList[1].modeName, -// bottomText = modeList[1].modeDesc, -// topColor = if (isEnable) if (isClicked) "#00BC71" else "#000000" else "#B4B4B4", -// bottomColor = if (isEnable) "#8B8B8B" else "#B4B4B4" -// ) -// } -// -// private fun loadCookSpan(isClicked: Boolean = false, isEnable: Boolean = true) { -// binding.rbModeCook.text = -// getModeTextSpan( -// topText = modeList[0].modeName, -// bottomText = modeList[0].modeDesc, -// topColor = if (isEnable) if (isClicked) "#00BC71" else "#000000" else "#B4B4B4", -// bottomColor = if (isEnable) "#8B8B8B" else "#B4B4B4" -// ) -// } -// -// private fun getModeTextSpan( -// topText: String, -// topColor: String, -// bottomText: String, -// bottomColor: String -// ): SpannableStringBuilder { -// -// -// return buildSpannableString { -// appendText( -// topText, -// ForegroundColorSpan(topColor.toColorInt()), -// StyleSpan(Typeface.BOLD), -// AbsoluteSizeSpan(36, true), -// LineHeightSpan { text, start, end, spanstartv, v, fm -> -// fm.descent += 10.dp // 增加行间距 -// } -// ) -// append("\n") -// appendText( -// bottomText, -// ForegroundColorSpan(bottomColor.toColorInt()), -// AbsoluteSizeSpan(26, true) -// ) -// } -// } -// -// fun saveSeasoning(entity: SeasoningEntity) { -// appViewModel.saveSeasoning(entity) { -// toast("保存成功") -// } -// } -// -//} \ No newline at end of file diff --git a/app/src/main/java/com/shuwei/dish/match/ui/HomeActivity.kt b/app/src/main/java/com/shuwei/dish/match/ui/HomeActivity.kt index 4df77de..50455d9 100644 --- a/app/src/main/java/com/shuwei/dish/match/ui/HomeActivity.kt +++ b/app/src/main/java/com/shuwei/dish/match/ui/HomeActivity.kt @@ -143,16 +143,26 @@ class HomeActivity : BaseActivity() { } private fun goSampling() { - appViewModel.countCookFood(cookMode = 1) { - if (it > 0) { + appViewModel.loadSeasoning { + if (it.isEmpty()) { + //无调料信息打开采样历史列表页面,点击设置配置调料信息 startActivity() finish() - return@countCookFood + return@loadSeasoning } - startActivity { - putExtra(DishSamplingActivity.PAGE_FROM, DishSamplingActivity.HOME) + appViewModel.countCookFood(cookMode = 1) { count -> + if (count > 0) { + //有烹饪中数据打开采样历史列表页面 + startActivity() + finish() + return@countCookFood + } + //无烹饪数据打开新增采样页面 + startActivity { + putExtra(DishSamplingActivity.PAGE_FROM, DishSamplingActivity.HOME) + } + finish() } - finish() } } diff --git a/app/src/main/java/com/shuwei/dish/match/ui/InitActivity.kt b/app/src/main/java/com/shuwei/dish/match/ui/InitActivity.kt index dada9e2..e4b5581 100644 --- a/app/src/main/java/com/shuwei/dish/match/ui/InitActivity.kt +++ b/app/src/main/java/com/shuwei/dish/match/ui/InitActivity.kt @@ -108,16 +108,26 @@ class InitActivity : BaseActivity() { } private fun goSampling() { - appViewModel.countCookFood(cookMode = 1) { - if (it > 0) { + appViewModel.loadSeasoning { + if (it.isEmpty()) { + //无调料信息打开采样历史列表页面,点击设置配置调料信息 startActivity() finish() - return@countCookFood + return@loadSeasoning } - startActivity { - putExtra(DishSamplingActivity.PAGE_FROM, DishSamplingActivity.HOME) + appViewModel.countCookFood(cookMode = 1) { count -> + if (count > 0) { + //有烹饪中数据打开采样历史列表页面 + startActivity() + finish() + return@countCookFood + } + //无烹饪数据打开新增采样页面 + startActivity { + putExtra(DishSamplingActivity.PAGE_FROM, DishSamplingActivity.HOME) + } + finish() } - finish() } } diff --git a/app/src/main/java/com/shuwei/dish/match/ui/SamplingListActivity.kt b/app/src/main/java/com/shuwei/dish/match/ui/SamplingListActivity.kt index 7cee15c..4233ece 100644 --- a/app/src/main/java/com/shuwei/dish/match/ui/SamplingListActivity.kt +++ b/app/src/main/java/com/shuwei/dish/match/ui/SamplingListActivity.kt @@ -16,6 +16,7 @@ import com.shuwei.dish.match.base.BaseApp import com.shuwei.dish.match.databinding.ActivitySamplingBinding import com.shuwei.dish.match.databinding.LayoutEmptyViewBinding import com.shuwei.dish.match.db.AppRepository +import com.shuwei.dish.match.dialog.DialogTool import com.shuwei.dish.match.entity.CookFoodEntity import com.shuwei.dish.match.entity.FoodRecord import com.shuwei.dish.match.entity.FoodRecordBean @@ -64,9 +65,6 @@ class SamplingListActivity : BaseActivity() { it.visible() it.setImageResource(R.drawable.ic_setting) it.setOnClickListener { -// startActivity { -// putExtra(DeviceSettingActivity.COOK_MODE, 2) -// } startActivity { putExtra(DeviceConfigActivity.COOK_MODE, 2) } @@ -116,25 +114,30 @@ class SamplingListActivity : BaseActivity() { SamplingAdapter(list = list).apply { isStateViewEnable = true setOnItemClickListener { adapter, view, position -> - val item = list[position] - if (item.isCooking) { - //烹饪中,跳到称熟重页面 -// context.startActivity { - context.startActivity { - putExtra( - SubmitFoodActivity.FOOD_ITEM, - item as Serializable - ) - } - return@setOnItemClickListener - } - context.startActivity { - putExtra(DishSamplingActivity.FOOD_NAME, item.foodName) + judgeDeviceConfig { + onItemClick(position) } } } } + private fun onItemClick(position:Int) { + val item = list[position] + if (item.isCooking) { + //烹饪中,跳到称熟重页面 + startActivity { + putExtra( + SubmitFoodActivity.FOOD_ITEM, + item as Serializable + ) + } + return + } + startActivity { + putExtra(DishSamplingActivity.FOOD_NAME, item.foodName) + } + } + @SuppressLint("NotifyDataSetChanged") private fun initRecyclerView() { binding.rvSamplingList.run { @@ -163,7 +166,9 @@ class SamplingListActivity : BaseActivity() { @SuppressLint("ClickableViewAccessibility") private fun addViewListener() { binding.btnAddSampling.setOnClickListener { - startActivity() + judgeDeviceConfig{ + startActivity() + } } binding.refreshLayout.setOnRefreshListener { pageNo = 1 @@ -172,16 +177,6 @@ class SamplingListActivity : BaseActivity() { binding.refreshLayout.setOnLoadMoreListener { getSamplingList() } - binding.dishRadioGroup.setOnCheckedChangeListener { group, checkedId -> - //Log.d(TAG, "addViewListener: checkId=${if (checkedId == R.id.rbSamplingCooking) "cooking" else "finish"}") -// if (!group.isPressed) return@setOnCheckedChangeListener -// if (checkedId == R.id.rbSamplingCooking) { -// refreshLocalData() -// } else { -// pageNo = 1 -// getSamplingList() -// } - } binding.rbSamplingCooking.setOnClickListener { // Log.d(TAG, "addViewListener: cooking:${binding.rbSamplingCooking.isChecked}") @@ -223,32 +218,7 @@ class SamplingListActivity : BaseActivity() { HttpUtil.get( url = sb.toString(), doSuccess = { - binding.refreshLayout.run { - setEnableRefresh(true) - } - delayDismissLoading() - finishRefresh() - val json = it.toJsonString() - val recordBean: FoodRecordBean? = json.toObject() - if (recordBean == null || recordBean.records.isNullOrEmpty()) { - //toast("暂未搜索到相关菜品信息") - if (pageNo == 1) { - loadEmptyView() - } - return@get - } - val records = recordBean.records - if (pageNo == 1) { - list.clear() - } - list.addAll(records!!) - dishAdapter.notifyDataSetChanged() - val isLoadMoreEnable = records.size >= pageSize - binding.refreshLayout.setEnableLoadMore(isLoadMoreEnable) - binding.refreshLayout.setEnableRefresh(true) - if (isLoadMoreEnable) { - pageNo++ - } + loadDishList(it) }, doFailure = { code, msg -> binding.refreshLayout.run { setEnableRefresh(true) @@ -361,4 +331,67 @@ class SamplingListActivity : BaseActivity() { } } + @SuppressLint("NotifyDataSetChanged") + private fun loadDishList(data: Any) { + binding.refreshLayout.run { + setEnableRefresh(true) + } + delayDismissLoading() + finishRefresh() + val json = data.toJsonString() + val recordBean: FoodRecordBean? = json.toObject() + if (recordBean == null || recordBean.records.isNullOrEmpty()) { + //toast("暂未搜索到相关菜品信息") + if (pageNo == 1) { + loadEmptyView() + } + return + } + val records = recordBean.records + if (pageNo == 1) { + list.clear() + } + list.addAll(records!!) + dishAdapter.notifyDataSetChanged() + val isLoadMoreEnable = records.size >= pageSize + binding.refreshLayout.setEnableLoadMore(isLoadMoreEnable) + binding.refreshLayout.setEnableRefresh(true) + if (isLoadMoreEnable) { + pageNo++ + } + } + + private var configFinished = false + + fun judgeDeviceConfig(block:()-> Unit) { + if (configFinished) { + block() + return + } + appViewModel.loadSeasoning { + if (it.isEmpty()) { + showDeviceConfigDialog() + return@loadSeasoning + } + configFinished = true + block() + } + } + + private fun showDeviceConfigDialog() { + DialogTool.load( + context = this, + title = "温馨提示", + content = "请先在设备配置页面进行调料设置", + leftBtnText = "取消", + rightBtnText = "去设置", + leftBtnClick = {}, + rightBtnClick = { + startActivity { + putExtra(DeviceConfigActivity.COOK_MODE, 2) + } + } + ) + } + } \ No newline at end of file diff --git a/app/src/main/java/com/shuwei/dish/match/ui/SelectDishActivity.kt b/app/src/main/java/com/shuwei/dish/match/ui/SelectDishActivity.kt index eb21b7e..ded516a 100644 --- a/app/src/main/java/com/shuwei/dish/match/ui/SelectDishActivity.kt +++ b/app/src/main/java/com/shuwei/dish/match/ui/SelectDishActivity.kt @@ -11,6 +11,7 @@ import com.shuwei.dish.match.base.BaseActivity import com.shuwei.dish.match.base.BaseApp import com.shuwei.dish.match.databinding.ActivitySelectDishBinding import com.shuwei.dish.match.db.AppRepository +import com.shuwei.dish.match.dialog.DialogTool import com.shuwei.dish.match.entity.CookFoodEntity import com.shuwei.dish.match.ui.fragment.DishListFragment import com.shuwei.dish.match.utils.KeyboardUtil @@ -54,9 +55,6 @@ class SelectDishActivity : BaseActivity() { it.visible() it.setImageResource(R.drawable.ic_setting) it.setOnClickListener { -// startActivity { -// putExtra(DeviceSettingActivity.COOK_MODE, 1) -// } startActivity { putExtra(DeviceConfigActivity.COOK_MODE, 1) } @@ -81,14 +79,47 @@ class SelectDishActivity : BaseActivity() { appViewModel.getCookFoodList(cookMode = 0, dinnerType = dinnerType) { action(it) } } + private var configFinished = false + + fun judgeDeviceConfig(block: () -> Unit) { + if (configFinished) { + block() + return + } + appViewModel.loadSeasoning { + if (it.isEmpty()) { + showDeviceConfigDialog() + return@loadSeasoning + } + configFinished = true + block() + } + } + + private fun showDeviceConfigDialog() { + DialogTool.load( + context = this, + title = "温馨提示", + content = "请先在设备配置页面进行调料设置", + leftBtnText = "取消", + rightBtnText = "去设置", + leftBtnClick = {}, + rightBtnClick = { + startActivity { + putExtra(DeviceConfigActivity.COOK_MODE, 1) + } + } + ) + } + fun addViewListener() { binding.dishRadioGroup.setOnCheckedChangeListener { _, checkedId -> - dinnerType = when (checkedId) { - R.id.rbBreakfast -> "1" - R.id.rbLunch -> "2" - R.id.rbDinner -> "3" - else -> "1" - } + dinnerType = when (checkedId) { + R.id.rbBreakfast -> "1" + R.id.rbLunch -> "2" + R.id.rbDinner -> "3" + else -> "1" + } loadFragment() } binding.etInputDish.addOnActionSearchListener { @@ -142,10 +173,10 @@ class SelectDishActivity : BaseActivity() { if (lastDinnerType == "1" || lastDinnerType == "2" || lastDinnerType == "3") { fragmentList[lastDinnerType.toInt() - 1].getDishList(1, lastDinnerType) } - when(lastDinnerType) { - "1"->binding.dishRadioGroup.check(R.id.rbBreakfast) - "2"->binding.dishRadioGroup.check(R.id.rbLunch) - "3"->binding.dishRadioGroup.check(R.id.rbDinner) + when (lastDinnerType) { + "1" -> binding.dishRadioGroup.check(R.id.rbBreakfast) + "2" -> binding.dishRadioGroup.check(R.id.rbLunch) + "3" -> binding.dishRadioGroup.check(R.id.rbDinner) } }.onFailure { it.printStackTrace() diff --git a/app/src/main/java/com/shuwei/dish/match/ui/SubmitDishActivity.kt b/app/src/main/java/com/shuwei/dish/match/ui/SubmitDishActivity.kt deleted file mode 100644 index 5cccb2b..0000000 --- a/app/src/main/java/com/shuwei/dish/match/ui/SubmitDishActivity.kt +++ /dev/null @@ -1,429 +0,0 @@ -//package com.shuwei.dish.match.ui -// -//import android.annotation.SuppressLint -//import android.os.Bundle -//import android.util.Log -//import android.util.SparseArray -//import android.util.SparseIntArray -//import androidx.core.util.forEach -//import androidx.lifecycle.ViewModelProvider -//import com.aithings.Weigher -//import com.google.gson.reflect.TypeToken -//import com.shuwei.dish.match.R -//import com.shuwei.dish.match.adapter.SeasoningCellTool -//import com.shuwei.dish.match.adapter.TextCellAdapter -//import com.shuwei.dish.match.base.BaseActivity -//import com.shuwei.dish.match.base.BaseApp -//import com.shuwei.dish.match.databinding.ActivitySubmitDishBinding -//import com.shuwei.dish.match.db.AppRepository -// -//import com.shuwei.dish.match.entity.CookFoodEntity -//import com.shuwei.dish.match.entity.CookFoodGoodsEntity -//import com.shuwei.dish.match.entity.FoodRecord -//import com.shuwei.dish.match.entity.SeasoningEntity -//import com.shuwei.dish.match.http.HttpUtil -//import com.shuwei.dish.match.http.UrlConfig -//import com.shuwei.dish.match.utils.DataUtil -//import com.shuwei.dish.match.utils.WeightUtil -//import com.shuwei.dish.match.utils.ext.clickWithDebounce -//import com.shuwei.dish.match.utils.ext.gone -//import com.shuwei.dish.match.utils.ext.startActivity -//import com.shuwei.dish.match.utils.ext.toJsonString -//import com.shuwei.dish.match.utils.ext.toType -//import com.shuwei.dish.match.utils.ext.toast -//import com.shuwei.dish.match.utils.ext.visible -//import com.shuwei.dish.match.viewmodel.AppViewModel -//import com.shuwei.dish.match.viewmodel.factory.AppFactory -// -//@SuppressLint("UseSparseArrays") -//class SubmitDishActivity : BaseActivity() { -// -// companion object { -// const val TAG = "SubmitDishActivity" -// const val FOOD_ITEM = "foodItem" -// const val GOODS_LIST = "goodsList" -// } -// -// private lateinit var binding: ActivitySubmitDishBinding -// -// private var food: FoodRecord? = null -// private var goodsList: MutableList? = null -// -// private var isCooking = false -// -// private val cookFoodEntity by lazy { -// CookFoodEntity().apply { -// food?.let { -// foodId = it.foodId ?: "" -// foodName = it.foodName -// cookMode = it.cookMode -// dinnerType = it.dinnerType -// } -// canteenId = BaseApp.canteenId -// } -// } -// -// @Suppress("unchecked_cast", "DEPRECATION") -// override fun onCreate(savedInstanceState: Bundle?) { -// super.onCreate(savedInstanceState) -// binding = ActivitySubmitDishBinding.inflate(layoutInflater) -// setContentView(binding.root) -// initViewModel() -// setHeaderBackground() -// intent.extras?.apply { -// food = getSerializable(FOOD_ITEM) as FoodRecord? -// Log.d(TAG, "onCreate: cookMode=${food?.cookMode}") -// isCooking = food?.isCooking ?: false -// if (isCooking) { -// //烹饪中,从本地查询数据 -// loadSeasoningFromLocal() -// } else { -// //非烹饪中,从菜品主辅材配置页面带入数据 -// goodsList = getSerializable(GOODS_LIST) as MutableList? -// } -// } -// setTitleBar(titleBarAction = { -// it.visible() -// }, titleAction = { -// it.text = food?.foodName -// }, rightIconActon = { -// it.gone() -// it.setImageResource(R.drawable.ic_setting) -// it.setOnClickListener { -// //startActivity() -// } -// }) -// addViewListener() -// } -// -// private fun loadSeasoningFromLocal() { -// appViewModel.getCookFoodGoodsList(foodId = food!!.foodId!!, cookMode = food!!.cookMode) { it -> -// goodsList = mutableListOf() -// //设置主辅材数据 -// goodsList?.addAll(it.filter { goods -> goods.materialType != 3 }) -// -// //获取调料数据并展示 -// val filterList: List? = it.filter { goods -> goods.materialType == 3 } -// .map { entity -> -// SeasoningEntity().also { se -> -// se.goodsId = entity.goodsId -// se.goodsName = entity.goodsName -// se.goodsOrRelationCode = entity.goodsOrRelationCode -// se.relateionType = entity.relateionType -// se.materialType = entity.materialType -// se.allEdible = entity.allEdible -// se.useWeight = entity.useWeight -// se.popularName = entity.popularName -// se.canteenId = entity.canteenId -// se.relateionType_dictText = entity.relateionType_dictText -// se.foodId = entity.foodId -// se.sort = entity.sort -// se.pageType = 0 -// } -// } -// filterList?.toMutableList()?.let { cellData -> -// loadTextCell(cellData) -// } -// } -// } -// -// -// private lateinit var seasoningList: List -// private var isFirstSave = true -// fun updateSeasoningList(list: MutableList) { -// if (isFirstSave) { -// val json = list.toJsonString() -// val typeToken = object : TypeToken>() {} -// seasoningList = json.toType(typeToken = typeToken) -// isFirstSave = false -// } -// } -// -// private val seasoningArray by lazy { -// SparseArray() -// } -// -// -// private val firstGoodsArray by lazy { -// SparseArray() -// } -// -// private fun addViewListener() { -// addWeightListener() -// binding.btnWeightClear.setOnClickListener { Weigher.tareTwo(AddressUtil.TWO) } -// -// binding.btnCook.clickWithDebounce { -// cook() -// } -// -// binding.btnSubmit.clickWithDebounce { -// if (cookFoodEntity.foodWeight <= 0.toDouble()) { -// toast("未识别到菜品熟重") -// return@clickWithDebounce -// } -// submit() -// } -// } -// -// private fun addWeightListener() { -// WeightUtil.addWeightListener(getWeight = { address, state, weight -> -// if (address == 1) { -// cookFoodEntity.foodWeight = weight.toDouble() -// binding.tvTotalWeight.text = "${weight / 1000f}" -// } -//// if (state != SensorScale.STATE_STABLE) { -//// return@addWeightListener -//// } -// val firstWeight = firstGoodsArray.get(address, null) -//// if (firstWeight != weight) { -//// Log.d( -//// TAG, -//// "addViewListener: state=$state,address=$address,weight=$weight,firstWeight=$firstWeight" -//// ) -//// } -// if (firstWeight == null) { -// //未设置数据 -// firstGoodsArray.put(address, weight) -// return@addWeightListener -// } -//// val cookingWeight = -//// if (isCooking && seasoningList.isNullOrEmpty().not()) -//// seasoningList?.get(weightRelateArray2.get(address))?.weight ?: 0 -//// else 0 -//// var realUseWeight = firstWeight - weight + cookingWeight -// var realUseWeight = firstWeight - weight -// realUseWeight = if (realUseWeight > 0) realUseWeight else 0 -//// Log.d( -//// TAG, -//// "addViewListener: state=$state,address=$address,总共使用重量:$realUseWeight" -//// ) -// seasoningArray.put(address, realUseWeight.toDouble()) -// -// refreshSeasoningWeight() -// }) -// } -// -// @SuppressLint("NotifyDataSetChanged") -// private fun refreshSeasoningWeight() { -// binding.rvSeasoning.adapter?.let { adapter -> -// if (adapter is TextCellAdapter) { -// adapter.list.let { items -> -// weightRelateArray.forEach { key, value -> -// items[key].useWeight = -// (seasoningArray.get(value) ?: 0.toDouble()) + getCookingSeasoning(value) -// } -// } -// adapter.notifyDataSetChanged() -// TextCellAdapter.loadCell(binding.tvRightBottomCell, adapter.list[14]) -// } -// } -// } -// -// private fun getCookingSeasoning(address: Int): Double { -// if (isCooking.not()) return 0.toDouble() -// if (seasoningList.isEmpty()) return 0.toDouble() -// val weight = seasoningList[weightRelateArray2.get(address)].useWeight ?: 0.toDouble() -// //Log.i(TAG, "getCookingSeasoning: weight[${address}]=$weight,seasoningList=${seasoningList.toJsonString()}") -// return weight -// } -// -// private val weightRelateArray2 by lazy { -// SparseIntArray().apply { -// weightRelateArray.forEach { key, value -> -// if (value == 3) { -// put(3, 14) -// } else { -// put(value, key) -// } -// } -// } -// } -// -// private val weightRelateArray by lazy { -// DataUtil.getWeighAddressArray() -// } -// -//// private fun prepareData(acton: () -> Unit) { -//// -//// //只有制作和采样列表页面才能进入设置页面,提交页面无法进行设置,不存在调料数据被修改的问题 -//// val seasoningJson = realSeasoningData.toJsonString() -//// val typeToken = object : TypeToken>() {} -//// val tempSeasoningList = seasoningJson.toType(typeToken = typeToken) -//// goodsList?.addAll(tempSeasoningList) -//// acton() -//// -//// } -// -// private fun cook() { -// if (food == null || goodsList.isNullOrEmpty()) { -// toast("未获取到菜品或构成信息") -// return -// } -// val realSeasoningData = (binding.rvSeasoning.adapter as TextCellAdapter).list -// if (realSeasoningData.isEmpty() && !isCooking) { -// toast("未获取到调料信息") -// return -// } -// if (realSeasoningData.isNotEmpty()&&realSeasoningData[0].goodsId.isNullOrBlank()) { -// toast("还未设置调料信息,请去设置页面操作") -// return -// } -// showLoading() -// //只有制作和采样列表页面才能进入设置页面,提交页面无法进行设置,不存在调料数据被修改的问题 -// val seasoningJson = realSeasoningData.toJsonString() -// val typeToken = object : TypeToken>() {} -// val tempSeasoningList = seasoningJson.toType(typeToken = typeToken) -// goodsList?.addAll(tempSeasoningList) -// cookFoodEntity.let { -// it.dinnerType = when (it.dinnerType) { -// "早餐" -> "1" -// "午餐" -> "2" -// "晚餐" -> "3" -// else -> it.dinnerType -// } -// } -// val isSamplingData = food!!.cookMode == 1 -// if (isSamplingData) { -// //生成临时foodId,解决采样模式没有foodId,无法关联数据的问题 -// val tempFoodId = cookFoodEntity.foodId.ifBlank { "${System.currentTimeMillis()}" } -// cookFoodEntity.foodId = tempFoodId -// } -// //全部设置同一foodId -// goodsList?.forEach { -// it.foodId = cookFoodEntity.foodId -// } -// //保存菜品-保存主辅料调料 -// appViewModel.saveCookFoodAndGoods( -// cookMode = food!!.cookMode, -// entity = cookFoodEntity, -// list = goodsList, -// onFinish = { -// runOnUiThread { -// dismissLoading() -// jumpPage(isSamplingData, true) -// } -// }) -// } -// -// private fun submit() { -// if (food == null || goodsList.isNullOrEmpty()) { -// toast("未获取到菜品或构成信息") -// return -// } -// val realSeasoningData = (binding.rvSeasoning.adapter as TextCellAdapter).list -// if (realSeasoningData.isEmpty() && !isCooking) { -// toast("未获取到调料信息") -// return -// } -// if (realSeasoningData.isNotEmpty()&&realSeasoningData[0].goodsId.isNullOrBlank()) { -// toast("还未设置调料信息,请去设置页面操作") -// return -// } -// showLoading() -// //只有制作和采样列表页面才能进入设置页面,提交页面无法进行设置,不存在调料数据被修改的问题 -// val seasoningJson = realSeasoningData.toJsonString() -// val typeToken = object : TypeToken>() {} -// val tempSeasoningList = seasoningJson.toType(typeToken = typeToken) -// tempSeasoningList.forEach { entity -> -// val realWeight = entity.useWeight ?: 0.toDouble() -// val filterData = goodsList?.firstOrNull { it.goodsId == entity.goodsId } -// //确保重量大于0,且无重复数据 -// if (realWeight > 0.toDouble() && filterData == null) { -// goodsList?.add(entity) -// } -// } -// -// cookFoodEntity.let { -// it.stFoodInfoConstituteList = this@SubmitDishActivity.goodsList -// it.dinnerType = when(it.dinnerType) { -// "1" -> "早餐" -// "2" -> "午餐" -// "3" -> "晚餐" -// else -> null -// } -// } -// -// val isSamplingData = food!!.cookMode == 1 -// if (isSamplingData) { -// //采样模式没有foodId -// cookFoodEntity.foodId = "" -// goodsList?.forEach { it.foodId = "" } -// } -// val json = cookFoodEntity.toJsonString() -// Log.d(TAG, "submit: json=$json") -// HttpUtil.postJson( -// url = UrlConfig.SUBMIT_DISH, -// json = json, -// doSuccess = { -// Log.d(TAG, "submit: postJson=$it") -// submitSuccess(isSamplingData) -// }, doFailure = { code, msg -> -// Log.d(TAG, "submit: postJson:code=$code,msg=$msg") -// toast(msg) -// dismissLoading() -// }) -// } -// -// private fun submitSuccess(isSamplingData: Boolean) { -// if (food?.foodId.isNullOrBlank()) { -// //本地无删除数据直接跳转页面 -// dismissLoading() -// jumpPage(isSamplingData, false) -// return -// } -// //删除本地数据 -// appViewModel.deleteCookFoodAndGoods( -// cookMode = food!!.cookMode, -// foodId = food!!.foodId!! -// ) { -// dismissLoading() -// jumpPage(isSamplingData, false) -// } -// } -// -// private fun jumpPage(isSampling: Boolean, isCooking: Boolean) { -// if (isSampling) { -// startActivity { -// putExtra(SelectDishActivity.IS_COOKING, isCooking) -// } -// return -// } -// startActivity { -// putExtra(SelectDishActivity.IS_COOKING, isCooking) -// putExtra(SelectDishActivity.DINNER_TYPE, food?.dinnerType) -// } -// } -// -// private lateinit var appViewModel: AppViewModel -// -// private fun initViewModel() { -// val db = BaseApp.instance!!.database -// val factory = -// AppFactory(AppRepository(db.appDao())) -// appViewModel = -// ViewModelProvider(this, factory)[AppViewModel::class.java] -// } -// -// override fun onResume() { -// super.onResume() -// binding.tvRightBottomCell.visible() -// if (isCooking.not()) { -// //烹饪中使用本地数据,未烹饪则使用默认的调料配置数据 -// appViewModel.loadSeasoning { -// Log.d(TAG, "onResume: loadSeasoning:${it.toJsonString()}") -// loadTextCell(it) -// } -// } -// } -// -// private fun loadTextCell(list: MutableList) { -// SeasoningCellTool.loadData( -// activity = this, -// initList = list, -// recyclerView = binding.rvSeasoning, -// tvCell = binding.tvRightBottomCell -// ) -// } -//} -// -// diff --git a/app/src/main/java/com/shuwei/dish/match/ui/SubmitFoodActivity.kt b/app/src/main/java/com/shuwei/dish/match/ui/SubmitFoodActivity.kt index 4271ee5..3c56cdd 100644 --- a/app/src/main/java/com/shuwei/dish/match/ui/SubmitFoodActivity.kt +++ b/app/src/main/java/com/shuwei/dish/match/ui/SubmitFoodActivity.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.util.Log import android.util.SparseArray import android.util.SparseIntArray +import android.widget.FrameLayout import android.widget.TextView import androidx.core.util.forEach import androidx.lifecycle.ViewModelProvider @@ -180,58 +181,53 @@ class SubmitFoodActivity : BaseActivity() { realUseWeight = if (realUseWeight > 0) realUseWeight else 0 seasoningArray.put(address, realUseWeight.toDouble()) - refreshSeasoningWeight() +// refreshSeasoningWeight() + + val item = seasoningItems.firstOrNull { address == addressArray[it.sort]} + item?.let { + val lastWeight = seasoningArray.get(address) ?: 0.toDouble() + it.useWeight = lastWeight + getCookingSeasoning(address) + updateGridData(it) + } }) } - @SuppressLint("NotifyDataSetChanged") - private fun refreshSeasoningWeight() { - if (seasoningItems.isEmpty()) { - return - } - seasoningItems.let { items -> - weightRelateArray.forEach { key, value -> - items[key].useWeight = - (seasoningArray.get(value) ?: 0.toDouble()) + getCookingSeasoning(value) - } - } - setGridData(seasoningItems) -// binding.rvSeasoning.adapter?.let { adapter -> -// if (adapter is TextCellAdapter) { -// adapter.list.let { items -> -// weightRelateArray.forEach { key, value -> -// items[key].useWeight = -// (seasoningArray.get(value) ?: 0.toDouble()) + getCookingSeasoning(value) -// } -// } -// adapter.notifyDataSetChanged() +// private fun refreshSeasoningWeight() { +// if (seasoningItems.isEmpty()) { +// return +// } +// seasoningItems.let { items -> +// addressArray.forEach { key, value -> +// items[key].useWeight = +// (seasoningArray.get(value) ?: 0.toDouble()) + getCookingSeasoning(value) // } // } +// setGridData(seasoningItems) +// } + + private fun updateGridData(entity:SeasoningEntity) { + val gridLayout = binding.include.root + val tag = entity.sort.toString() + val frameLayout = gridLayout.findViewWithTag(tag) + TextCellAdapter.loadLayout(frameLayout , entity) } private fun getCookingSeasoning(address: Int): Double { if (isCooking.not()) return 0.toDouble() if (seasoningItems.isEmpty()) return 0.toDouble() -// val weight = seasoningItems[weightRelateArray2.get(address)].useWeight ?: 0.toDouble() val weight = seasoningCookingItems?.get(weightRelateArray2.get(address))?.useWeight ?: 0.toDouble() - //Log.i(TAG, "getCookingSeasoning: weight[${address}]=$weight,seasoningList=${seasoningList.toJsonString()}") return weight } private val weightRelateArray2 by lazy { SparseIntArray().apply { - weightRelateArray.forEach { key, value -> + addressArray.forEach { key, value -> put(value, key) -// if (value == 3) { -// put(3, 14) -// } else { -// put(value, key) -// } } } } - private val weightRelateArray by lazy { + private val addressArray by lazy { AddressUtil.getWeighAddressArray() } @@ -431,8 +427,8 @@ class SubmitFoodActivity : BaseActivity() { val gridLayout = binding.include.root list.forEach { entity -> val tag = entity.sort.toString() - val child = gridLayout.findViewWithTag(tag) - TextCellAdapter.loadCell(child, entity) + val frameLayout = gridLayout.findViewWithTag(tag) + TextCellAdapter.loadLayout(frameLayout, entity) } } } diff --git a/app/src/main/java/com/shuwei/dish/match/ui/fragment/DishListFragment.kt b/app/src/main/java/com/shuwei/dish/match/ui/fragment/DishListFragment.kt index 5319882..603905c 100644 --- a/app/src/main/java/com/shuwei/dish/match/ui/fragment/DishListFragment.kt +++ b/app/src/main/java/com/shuwei/dish/match/ui/fragment/DishListFragment.kt @@ -5,12 +5,12 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.Fragment import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.LinearLayoutManager import com.chad.library.adapter4.util.setOnDebouncedItemClick import com.shuwei.dish.match.adapter.DishShowAdapter import com.shuwei.dish.match.base.BaseApp +import com.shuwei.dish.match.base.BaseFragment import com.shuwei.dish.match.databinding.FragmentDishListBinding import com.shuwei.dish.match.databinding.LayoutEmptyViewBinding @@ -28,7 +28,7 @@ import com.shuwei.dish.match.utils.ext.toObject import com.shuwei.dish.match.utils.ext.toast import java.io.Serializable -class DishListFragment : Fragment() { +class DishListFragment : BaseFragment() { companion object { private const val TAG = "DishListFragment" @@ -42,51 +42,52 @@ class DishListFragment : Fragment() { } } } + private var pageNo = 1 private val pageSize = 30 - private lateinit var activity: SelectDishActivity - - private lateinit var binding: FragmentDishListBinding - private var dinnerType = "0" + private lateinit var activity: SelectDishActivity + private var list: MutableList = mutableListOf() private val dishAdapter by lazy { DishShowAdapter(list = list).apply { isStateViewEnable = true setOnDebouncedItemClick { adapter, view, position -> - val item = list[position] - if (item.isCooking) { - //烹饪中,跳到称熟重页面 -// context.startActivity { - context.startActivity { - putExtra( - SubmitFoodActivity.FOOD_ITEM, - item as Serializable - ) - } - return@setOnDebouncedItemClick - } - item.dinnerType = dinnerType - context.startActivity { - putExtra( - SubmitFoodActivity.FOOD_ITEM, - item as Serializable - ) + activity.judgeDeviceConfig { + onItemClick(position) } } - } } - override fun onCreateView( + private fun onItemClick(position: Int) { + val item = list[position] + if (item.isCooking) { + //烹饪中,跳到称熟重页面 + activity.startActivity { + putExtra( + SubmitFoodActivity.FOOD_ITEM, + item as Serializable + ) + } + return + } + item.dinnerType = dinnerType + activity.startActivity { + putExtra( + SubmitFoodActivity.FOOD_ITEM, + item as Serializable + ) + } + } + + override fun inflateBinding( inflater: LayoutInflater, - container: ViewGroup?, - savedInstanceState: Bundle? - ): View? { - binding = FragmentDishListBinding.inflate(inflater, container, false) - return binding.root + container: ViewGroup? + ): FragmentDishListBinding { + return FragmentDishListBinding.inflate(inflater, container, false) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { diff --git a/app/src/main/java/com/shuwei/dish/match/ui/fragment/DishSamplingFragment.kt b/app/src/main/java/com/shuwei/dish/match/ui/fragment/DishSamplingFragment.kt deleted file mode 100644 index 7cc2e77..0000000 --- a/app/src/main/java/com/shuwei/dish/match/ui/fragment/DishSamplingFragment.kt +++ /dev/null @@ -1,187 +0,0 @@ -//package com.shuwei.dish.match.ui.fragment -// -//import android.annotation.SuppressLint -//import android.content.Intent -//import android.os.Bundle -//import android.util.Log -//import android.view.LayoutInflater -//import android.view.View -//import android.view.ViewGroup -//import androidx.fragment.app.Fragment -//import androidx.recyclerview.widget.LinearLayoutManager -//import com.aithings.Weigher -//import com.shuwei.dish.match.R -//import com.shuwei.dish.match.adapter.DishPartAdapter -//import com.shuwei.dish.match.databinding.FragmentDishSamplingBinding -//import com.shuwei.dish.match.dialog.BottomDialog -//import com.shuwei.dish.match.entity.CookFoodGoodsEntity -//import com.shuwei.dish.match.entity.FoodRecord -//import com.shuwei.dish.match.ui.FoodSearchActivity -//import com.shuwei.dish.match.ui.DishSamplingActivity -//import com.shuwei.dish.match.ui.SubmitDishActivity -//import com.shuwei.dish.match.utils.KeyboardUtil -//import com.shuwei.dish.match.utils.WeightUtil -//import com.shuwei.dish.match.utils.ext.addOnActionSearchListener -//import com.shuwei.dish.match.utils.ext.clickWithDebounce -//import com.shuwei.dish.match.utils.ext.startActivity -//import com.shuwei.dish.match.utils.ext.toJsonString -//import com.shuwei.dish.match.utils.ext.toast -//import java.io.Serializable -// -//class DishSamplingFragment : Fragment() { -// -// private val TAG = "DishSamplingFragment" -// -// private lateinit var activity: DishSamplingActivity -// private lateinit var binding: FragmentDishSamplingBinding -// -// val list: MutableList = mutableListOf() -// -// private var tempDishEntity: CookFoodGoodsEntity? = null -// -// private var dishMaterialType = 1 -// -// private val dishAdapter by lazy { -// DishPartAdapter(list).apply { -// addOnItemChildClickListener(R.id.ivOperateIcon) { _, _, positon -> -// //删除操作 -// removeAt(positon) -// } -// } -// } -// -// override fun onCreateView( -// inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? -// ): View { -// binding = FragmentDishSamplingBinding.inflate(inflater, container, false) -// return binding.root -// } -// -// override fun onViewCreated(view: View, savedInstanceState: Bundle?) { -// super.onViewCreated(view, savedInstanceState) -// activity = requireActivity() as DishSamplingActivity -// addViewClickListener() -// foodName = activity.foodName -// binding.etInputDish.setText(foodName) -// } -// -// @SuppressLint("NotifyDataSetChanged") -// private fun addViewClickListener() { -// binding.rvDishPartList.run { -// layoutManager = LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false) -// adapter = dishAdapter -// } -// binding.tvInputDishType.run { -// clickWithDebounce { -// BottomDialog(goodsType = 0).show(activity) { item -> -// val filterResult = list.firstOrNull { it.goodsName == item.goodsName } -// if (filterResult != null) { -// toast("不允许重复添加同一食材") -// return@show -// } -// text = item.goodsName -// tempDishEntity = CookFoodGoodsEntity().apply { -// goodsId = item.goodsId -// goodsName = item.goodsName -// -// relateionType = item.relateionType?:0 -// goodsOrRelationCode = item.goodsOrRelationCode -// -// // TODO: 待定 -// //allEdible = item.allEdible -// } -// } -// } -// } -// -// binding.ivWeightClear.setOnClickListener { -// Weigher.tareTwo(2) -// } -// WeightUtil.addWeightListener(getWeight = { address, state, weight -> -// Log.d(TAG, "addViewClickListener: address=$address,state=$state,weight=$weight") -// if (address == 2) { -// tempDishEntity?.useWeight = weight -// binding.tvDishPartWeight.text = "${weight}" -// } -// }) -// binding.ivWeightAdd.setOnClickListener { -// if (tempDishEntity == null) { -// activity.toast("请输入食材名称") -// return@setOnClickListener -// } -// if (binding.rgSampling.checkedRadioButtonId == -1) { -// activity.toast("请选择主辅材类型") -// return@setOnClickListener -// } -// if (tempDishEntity!!.useWeight == null) { -// activity.toast("请将食材放在称上称重") -// return@setOnClickListener -// } -// tempDishEntity!!.apply { -// isSamplingPage = true -// materialType = dishMaterialType -// } -// val result = list.firstOrNull { it.goodsId == tempDishEntity!!.goodsId } -// if (result != null) { -// activity.toast("${result.goodsName}食材已添加,请勿重复操作") -// return@setOnClickListener -// } -// list.add(tempDishEntity!!) -// dishAdapter.notifyDataSetChanged() -// tempDishEntity = null -// binding.tvInputDishType.text = "" -// binding.rgSampling.clearCheck() -// } -// binding.rgSampling.setOnCheckedChangeListener { group, checkedId -> -// dishMaterialType = if (checkedId == R.id.rbDishTypeFirst) 1 else 2 -// } -// binding.ivDishSearch.setOnClickListener { v -> -// jumpSearch(v) -// } -// binding.btnCook.clickWithDebounce { -// val showFoodName = binding.etInputDish.text.toString().trim() -// if (showFoodName.isBlank()) { -// toast("菜品名称为空") -// return@clickWithDebounce -// } -// if (list.isEmpty()) { -// toast("菜品构成信息未设置") -// return@clickWithDebounce -// } -// val food = FoodRecord() -// food.foodId = foodId -// food.foodName = showFoodName -// food.cookMode = 1 -// Log.d(TAG, "goToSubmit: goodsList:${list.toJsonString()}") -// activity.startActivity { -// putExtra(SubmitDishActivity.GOODS_LIST, list as Serializable) -// putExtra(SubmitDishActivity.FOOD_ITEM, food as Serializable) -// } -// } -// binding.etInputDish.let { v -> -// v.addOnActionSearchListener { -// jumpSearch(v) -// } -// } -// } -// -// private fun jumpSearch(v: View) { -// activity.launch(Intent(activity, FoodSearchActivity::class.java).apply { -// putExtra(FoodSearchActivity.FOOD_NAME, binding.etInputDish.text.toString().trim() ) -// }) { intent -> -// intent?.let { -// foodId = it.getStringExtra(FoodSearchActivity.FOOD_ID) -// foodName = it.getStringExtra(FoodSearchActivity.FOOD_NAME) -// binding.etInputDish.run { -// setText(foodName) -// setSelection(text.length) -// } -// } -// } -// KeyboardUtil.hideKeyboard(v.context, v) -// } -// -// -// private var foodId: String? = null -// private var foodName: String? = null -//} \ No newline at end of file diff --git a/app/src/main/java/com/shuwei/dish/match/ui/fragment/SamplingListFragment.kt b/app/src/main/java/com/shuwei/dish/match/ui/fragment/SamplingListFragment.kt deleted file mode 100644 index cae92ba..0000000 --- a/app/src/main/java/com/shuwei/dish/match/ui/fragment/SamplingListFragment.kt +++ /dev/null @@ -1,254 +0,0 @@ -//package com.shuwei.dish.match.ui.fragment -// -//import android.annotation.SuppressLint -//import android.os.Bundle -//import android.view.LayoutInflater -//import android.view.View -//import android.view.ViewGroup -//import androidx.fragment.app.Fragment -//import androidx.recyclerview.widget.ItemTouchHelper -//import androidx.recyclerview.widget.LinearLayoutManager -//import com.shuwei.dish.match.R -//import com.shuwei.dish.match.adapter.SamplingAdapter -//import com.shuwei.dish.match.databinding.FragmentSamplingListBinding -//import com.shuwei.dish.match.databinding.LayoutEmptyViewBinding -// -//import com.shuwei.dish.match.entity.FoodRecord -//import com.shuwei.dish.match.entity.FoodRecordBean -//import com.shuwei.dish.match.http.HttpUtil -//import com.shuwei.dish.match.http.UrlConfig -//import com.shuwei.dish.match.ui.DishSamplingActivity -//import com.shuwei.dish.match.ui.SamplingListActivity -//import com.shuwei.dish.match.ui.SubmitDishActivity -//import com.shuwei.dish.match.utils.DateTimeUtil -//import com.shuwei.dish.match.utils.SwipeCallback -//import com.shuwei.dish.match.utils.ext.startActivity -//import com.shuwei.dish.match.utils.ext.toJsonString -//import com.shuwei.dish.match.utils.ext.toObject -//import com.shuwei.dish.match.utils.ext.toast -//import java.io.Serializable -// -//class SamplingListFragment : Fragment() { -// -// companion object { -// private const val TAG = "SamplingListFragment" -// } -// -// private lateinit var activity: SamplingListActivity -// private lateinit var binding: FragmentSamplingListBinding -// -// private var list: MutableList = mutableListOf() -// private val dishAdapter by lazy { -// SamplingAdapter(list = list).apply { -// isStateViewEnable = true -// setOnItemClickListener { adapter, view, position -> -// val item = list[position] -// if (item.isCooking) { -// //烹饪中,跳到称熟重页面 -// context.startActivity { -// putExtra( -// SubmitDishActivity.FOOD_ITEM, -// item as Serializable -// ) -// } -// return@setOnItemClickListener -// } -// context.startActivity { -// putExtra(DishSamplingActivity.FOOD_NAME, item.foodName) -// } -// } -// } -// } -// -// @SuppressLint("NotifyDataSetChanged") -// private fun initRecyclerView() { -// binding.rvSamplingList.run { -// layoutManager = -// LinearLayoutManager(requireContext(), LinearLayoutManager.VERTICAL, false) -// adapter = dishAdapter -// val itemTouchHelper = ItemTouchHelper(SwipeCallback(dishAdapter) { position -> -// if (list[position].isCooking.not()) { -// activity.toast("只能删除烹饪中的菜品") -// dishAdapter.notifyItemChanged(position) -// return@SwipeCallback -// } -// activity.deleteCookFoodAndGoods(foodId = list[position].foodId?:"") { -// if (list.size > 1) { -// dishAdapter.removeAt(position) -// } else { -// loadEmptyView() -// } -// activity.toast("已删除") -// } -// }) -// itemTouchHelper.attachToRecyclerView(this) -// } -// } -// -// private fun addViewListener() { -// binding.btnAddSampling.setOnClickListener { -// activity.startActivity() -// } -// binding.refreshLayout.setOnRefreshListener { -// pageNo = 1 -// getSamplingList() -// } -// binding.refreshLayout.setOnLoadMoreListener { -// getSamplingList() -// } -// binding.dishRadioGroup.setOnCheckedChangeListener { group, checkedId -> -// if (checkedId == R.id.rbCooking) { -// refreshLocalData() -// } else { -// pageNo = 1 -// getSamplingList() -// } -// } -// } -// -// override fun onCreateView( -// inflater: LayoutInflater, -// container: ViewGroup?, -// savedInstanceState: Bundle? -// ): View { -// binding = FragmentSamplingListBinding.inflate(inflater, container, false) -// return binding.root -// } -// -// @SuppressLint("NotifyDataSetChanged") -// override fun onViewCreated(view: View, savedInstanceState: Bundle?) { -// super.onViewCreated(view, savedInstanceState) -// activity = requireActivity() as SamplingListActivity -// initRecyclerView() -// addViewListener() -// refreshLocalData() -// } -// -// var pageNo = 1 -// private val pageSize = 30 -// -// @SuppressLint("NotifyDataSetChanged") -// fun getSamplingList() { -// activity.showLoading() -// val map = mapOf( -//// "foodName" to input, -// "pageNo" to "$pageNo", -// "pageSize" to "$pageSize", -// "canteenId" to "0" -// ) -// val sb = StringBuilder(UrlConfig.SAMPLING_LIST).apply { -// append("?") -// map.forEach { (key, value) -> append("$key=$value&") } -// } -// sb.deleteCharAt(sb.length - 1) -// HttpUtil.get( -// url = sb.toString(), -// doSuccess = { -// binding.refreshLayout.run { -// setEnableRefresh(true) -// } -// activity.delayDismissLoading() -// finishRefresh() -// val json = it.toJsonString() -// val recordBean: FoodRecordBean? = json.toObject() -// if (recordBean == null || recordBean.records.isNullOrEmpty()) { -// //toast("暂未搜索到相关菜品信息") -// if (pageNo == 1) { -// loadEmptyView() -// } -// return@get -// } -// val records = recordBean.records -// if (pageNo == 1) { -// list.clear() -// } -// list.addAll(records!!) -// dishAdapter.notifyDataSetChanged() -// val isLoadMoreEnable = records.size >= pageSize -// binding.refreshLayout.setEnableLoadMore(isLoadMoreEnable) -// binding.refreshLayout.setEnableRefresh(true) -// if (isLoadMoreEnable) { -// pageNo++ -// } -// }, doFailure = { code, msg -> -// binding.refreshLayout.run { -// setEnableRefresh(true) -// } -// toast(msg) -// finishRefresh() -// binding.refreshLayout.setEnableRefresh(true) -// activity.delayDismissLoading() -// if (pageNo == 1) { -// loadEmptyView() -// } -// }) -// } -// -// private fun finishRefresh() { -// if (pageNo == 1) { -// binding.refreshLayout.finishRefresh(1200) -// } else { -// binding.refreshLayout.finishLoadMore(1200) -// } -// } -// -// private var emptyViewBinding:LayoutEmptyViewBinding?=null -// -// @SuppressLint("NotifyDataSetChanged") -// private fun loadEmptyView() { -// list.clear() -// dishAdapter.notifyDataSetChanged() -// if (emptyViewBinding == null) { -// emptyViewBinding = LayoutEmptyViewBinding.inflate(LayoutInflater.from(requireContext()), binding.rvSamplingList, false) -// } -// emptyViewBinding!!.tvContent.text = "暂无数据" -// emptyViewBinding!!.tvSubContent.text = "今日暂无采样数据,点击下方按钮新增采样" -// dishAdapter.stateView = emptyViewBinding!!.root -// //dishAdapter.setStateViewLayout(requireContext(), R.layout-sw800dp.layout_empty_view) -// -// binding.refreshLayout.run { -// setEnableRefresh(false) -// setEnableLoadMore(false) -// } -// } -// -// fun refreshPage(isCooking: Boolean) { -// binding.dishRadioGroup.check( -// if (isCooking) R.id.rbCooking else R.id.rbFinished -// ) -// } -// -// @SuppressLint("NotifyDataSetChanged") -// fun refreshLocalData() { -// activity.showLoading() -// //查询本地数据 -// activity.getCookFoodList { cookFoodEntities -> -// activity.delayDismissLoading() -// if (cookFoodEntities.isNullOrEmpty()) { -// loadEmptyView() -// return@getCookFoodList -// } -// val tempList = mutableListOf() -// -// cookFoodEntities -// .sortedByDescending { DateTimeUtil.convert(dateStr = it.createTime) } -// .forEach { entity -> -// tempList.add(FoodRecord().apply { -// foodId = entity.foodId -// foodName = entity.foodName -// cookMode = 1 -// isCooking = true -// }) -// } -// list.clear() -// list.addAll(tempList) -// dishAdapter.notifyDataSetChanged() -// binding.refreshLayout.run { -// setEnableRefresh(false) -// setEnableLoadMore(false) -// } -// } -// } -// -// -//} \ No newline at end of file diff --git a/app/src/main/java/com/shuwei/dish/match/utils/AddressUtil.kt b/app/src/main/java/com/shuwei/dish/match/utils/AddressUtil.kt index 6a29e14..f2e155b 100644 --- a/app/src/main/java/com/shuwei/dish/match/utils/AddressUtil.kt +++ b/app/src/main/java/com/shuwei/dish/match/utils/AddressUtil.kt @@ -9,15 +9,15 @@ object AddressUtil { fun getWeighAddressArray(): SparseIntArray { return SparseIntArray().apply { - put(0, 12) + put(0, 14) put(1, 13) - put(2, 14) - put(3, 9) + put(2, 12) + put(3, 11) put(4, 10) - put(5, 11) - put(6, 6) + put(5, 9) + put(6, 8) put(7, 7) - put(8, 8) + put(8, 6) put(9, 3) put(10, 5) put(11, 4) diff --git a/app/src/main/res/drawable/bg_oval.xml b/app/src/main/res/drawable/bg_oval.xml new file mode 100644 index 0000000..2d85d1d --- /dev/null +++ b/app/src/main/res/drawable/bg_oval.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_grid.xml b/app/src/main/res/layout/layout_grid.xml index 145f017..b6468c3 100644 --- a/app/src/main/res/layout/layout_grid.xml +++ b/app/src/main/res/layout/layout_grid.xml @@ -5,253 +5,484 @@ android:layout_width="match_parent" android:layout_height="725dp" android:paddingStart="23dp" - android:paddingEnd="22dp" android:paddingTop="30dp" + android:paddingEnd="22dp" android:paddingBottom="20dp" app:columnCount="3" app:orientation="vertical" - app:rowCount="5"> + app:rowCount="5" + tools:ignore="HardcodedText"> - - + app:layout_row="0"> - + + + + + + app:layout_row="0"> - + + + + + + app:layout_row="0"> - + + + + + + app:layout_row="1"> - + + + + + + app:layout_row="1"> - + + + + + + app:layout_row="1"> - + + + + + + + app:layout_row="2"> - + + + + + + app:layout_row="2"> - + + + + + + app:layout_row="2"> - + + + + + + app:layout_rowSpan="2"> - + + + + + + app:layout_row="3"> - + + + + + + app:layout_row="4"> + + + + + + \ No newline at end of file