diff --git a/app/src/main/java/com/shuwei/dish/match/ui/SamplingModeActivity.kt b/app/src/main/java/com/shuwei/dish/match/ui/SamplingModeActivity.kt index 06bf4ab..dd18ded 100644 --- a/app/src/main/java/com/shuwei/dish/match/ui/SamplingModeActivity.kt +++ b/app/src/main/java/com/shuwei/dish/match/ui/SamplingModeActivity.kt @@ -5,6 +5,7 @@ import android.content.Intent import android.os.Bundle import android.view.LayoutInflater import android.view.ViewGroup +import android.widget.FrameLayout import androidx.activity.addCallback import androidx.lifecycle.Lifecycle import androidx.lifecycle.lifecycleScope @@ -20,6 +21,7 @@ import com.shuwei.dish.match.dialog.CommonDialog import com.shuwei.dish.match.entity.FoodRecord import com.shuwei.dish.match.net.UiState import com.shuwei.dish.match.utils.DateTimeUtil +import com.shuwei.dish.match.utils.ext.dp import com.shuwei.dish.match.utils.ext.gone import com.shuwei.dish.match.utils.ext.startActivity import com.shuwei.dish.match.utils.ext.toast @@ -78,6 +80,7 @@ class SamplingModeActivity : BaseActivity() { list.clear() list.addAll(tempList) dishAdapter.notifyDataSetChanged() + finishRefresh() binding.refreshLayout.run { setEnableRefresh(false) setEnableLoadMore(false) @@ -231,18 +234,11 @@ class SamplingModeActivity : BaseActivity() { return SwipeMenuItem(this).apply { setImage(R.drawable.ic_trash_white) setBackground(R.drawable.bg_swipe_delete) - width = dp2px(160) + width = 160.dp height = ViewGroup.LayoutParams.MATCH_PARENT } } - /** - * dp 转 px - */ - private fun dp2px(dp: Int): Int { - return (dp * resources.displayMetrics.density + 0.5f).toInt() - } - @SuppressLint("ClickableViewAccessibility") private fun addViewListener() { binding.btnAddSampling.setOnClickListener { @@ -252,10 +248,19 @@ class SamplingModeActivity : BaseActivity() { } binding.refreshLayout.setOnRefreshListener { pageNo = 1 - getSamplingList() + if (binding.dishRadioGroup.checkedRadioButtonId == R.id.rbSamplingFinished) { + getSamplingList() + } else { + finishRefresh() + refreshLocalData() + } } binding.refreshLayout.setOnLoadMoreListener { - getSamplingList() + if (binding.dishRadioGroup.checkedRadioButtonId == R.id.rbSamplingFinished) { + getSamplingList() + } else { + finishRefresh() + } } binding.rbSamplingCooking.setOnClickListener { @@ -313,7 +318,17 @@ class SamplingModeActivity : BaseActivity() { } emptyViewBinding!!.tvContent.text = "暂无数据" emptyViewBinding!!.tvSubContent.text = "今日暂无采样数据,点击下方按钮新增采样" - dishAdapter.stateView = emptyViewBinding!!.root + + // 方案B:沿用 adapter stateView,使用 FrameLayout.LayoutParams + minimumHeight 避免空态贴顶 + emptyViewBinding!!.root.layoutParams = FrameLayout.LayoutParams( + FrameLayout.LayoutParams.MATCH_PARENT, + FrameLayout.LayoutParams.MATCH_PARENT + ) + binding.rvSamplingList.post { + emptyViewBinding!!.root.minimumHeight = binding.rvSamplingList.height + dishAdapter.stateView = emptyViewBinding!!.root + finishRefresh() + } //dishAdapter.setStateViewLayout(requireContext(), R.layout-sw800dp.layout_empty_view) binding.refreshLayout.run { 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 89c58a2..fa89c14 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,6 +5,7 @@ import android.content.Context import android.os.Bundle import android.view.LayoutInflater import android.view.ViewGroup +import android.widget.FrameLayout import androidx.lifecycle.Lifecycle import androidx.lifecycle.lifecycleScope import androidx.lifecycle.repeatOnLifecycle @@ -247,7 +248,14 @@ class DishListFragment : BaseFragment() { } emptyViewBinding!!.tvContent.text = "暂无数据" emptyViewBinding!!.tvSubContent.text = "获取菜品数据失败,请检查网络设置或稍后重试" - dishAdapter.stateView = emptyViewBinding!!.root + emptyViewBinding!!.root.layoutParams = FrameLayout.LayoutParams( + FrameLayout.LayoutParams.MATCH_PARENT, + FrameLayout.LayoutParams.MATCH_PARENT + ) + binding.rvDishList.post { + emptyViewBinding!!.root.minimumHeight = binding.rvDishList.height + dishAdapter.stateView = emptyViewBinding!!.root + } } catch (e: Exception) { e.printStackTrace() }