优化引导页数据获取

This commit is contained in:
wangyu 2026-02-24 09:39:31 +08:00
parent c1b2fa631c
commit ece2bcc9e8
4 changed files with 85 additions and 52 deletions

View File

@ -1,3 +1,3 @@
package com.cheng.blzb.event
class PayStatusEvent(var payStatus: com.cheng.blzb.event.PayStatusEnum, var message: String = "")
class PayStatusEvent(var payStatus: PayStatusEnum, var message: String? = "")

View File

@ -41,12 +41,11 @@ class GuideItem2Fragment: BaseFragment<FragmentGuideItem2Binding, GuideViewModel
override fun onLazyLoad() {
super.onLazyLoad()
val areaList = UserConfigManager.getAreaList()
areaList.add(0, AreaEntity(0, name = "全国地区", isChecked = true))
area1Adapter.setList(areaList)
area2Adapter.setList(areaList)
startAnim()
if (UserConfigManager.getAreaList().isNotEmpty()) {
setData()
} else {
mViewModel.getCityList()
}
}
@SuppressLint("NotifyDataSetChanged")
@ -99,6 +98,22 @@ class GuideItem2Fragment: BaseFragment<FragmentGuideItem2Binding, GuideViewModel
}
}
override fun initObserve() {
super.initObserve()
mViewModel.cityLiveData.observe(this) {
UserConfigManager.saveAreaList(it)
setData()
}
}
private fun setData() {
val areaList = UserConfigManager.getAreaList()
areaList.add(0, AreaEntity(0, name = "全国地区", isChecked = true))
area1Adapter.setList(areaList)
area2Adapter.setList(areaList)
startAnim()
}
private fun scrollToPosition(position: Int) {
binding.rvArea2.layoutManager?.startSmoothScroll(
LinearTopSmoothScroller(requireContext(), true)

View File

@ -40,48 +40,12 @@ class GuideItem3Fragment : BaseFragment<FragmentGuideItem3Binding, GuideViewMode
override fun onLazyLoad() {
super.onLazyLoad()
val hotWords = UserConfigManager.getGuideKeywords()
hotWords.forEachIndexed { index, item ->
when(index) {
0 -> {
binding.tvName1.text = item.name
binding.ivIcon1.setImageResource(R.mipmap.ic_guide_item3_icon1)
binding.layoutOption1.tag = item.id
}
1 -> {
binding.tvName2.text = item.name
binding.ivIcon2.setImageResource(R.mipmap.ic_guide_item3_icon2)
binding.layoutOption2.tag = item.id
}
2 -> {
binding.tvName3.text = item.name
binding.ivIcon3.setImageResource(R.mipmap.ic_guide_item3_icon3)
binding.layoutOption3.tag = item.id
}
3 -> {
binding.tvName4.text = item.name
binding.ivIcon4.setImageResource(R.mipmap.ic_guide_item3_icon4)
binding.layoutOption4.tag = item.id
}
4 -> {
binding.tvName5.text = item.name
binding.ivIcon5.setImageResource(R.mipmap.ic_guide_item3_icon5)
binding.layoutOption5.tag = item.id
}
5 -> {
binding.tvName6.text = item.name
binding.ivIcon6.setImageResource(R.mipmap.ic_guide_item3_icon6)
binding.layoutOption6.tag = item.id
}
6 -> {
binding.tvName7.text = item.name
binding.ivIcon7.setImageResource(R.mipmap.ic_guide_item3_icon7)
binding.layoutOption7.tag = item.id
}
}
if (UserConfigManager.getGuideKeywords().isNotEmpty()) {
setData()
} else {
mViewModel.getHotWordList()
}
startAnim()
}
override fun initListener() {
@ -194,6 +158,58 @@ class GuideItem3Fragment : BaseFragment<FragmentGuideItem3Binding, GuideViewMode
}
}
override fun initObserve() {
super.initObserve()
mViewModel.hotWordLiveData.observe(this) {
UserConfigManager.saveGuideKeywords(it)
setData()
}
}
private fun setData() {
val hotWords = UserConfigManager.getGuideKeywords()
hotWords.forEachIndexed { index, item ->
when(index) {
0 -> {
binding.tvName1.text = item.name
binding.ivIcon1.setImageResource(R.mipmap.ic_guide_item3_icon1)
binding.layoutOption1.tag = item.id
}
1 -> {
binding.tvName2.text = item.name
binding.ivIcon2.setImageResource(R.mipmap.ic_guide_item3_icon2)
binding.layoutOption2.tag = item.id
}
2 -> {
binding.tvName3.text = item.name
binding.ivIcon3.setImageResource(R.mipmap.ic_guide_item3_icon3)
binding.layoutOption3.tag = item.id
}
3 -> {
binding.tvName4.text = item.name
binding.ivIcon4.setImageResource(R.mipmap.ic_guide_item3_icon4)
binding.layoutOption4.tag = item.id
}
4 -> {
binding.tvName5.text = item.name
binding.ivIcon5.setImageResource(R.mipmap.ic_guide_item3_icon5)
binding.layoutOption5.tag = item.id
}
5 -> {
binding.tvName6.text = item.name
binding.ivIcon6.setImageResource(R.mipmap.ic_guide_item3_icon6)
binding.layoutOption6.tag = item.id
}
6 -> {
binding.tvName7.text = item.name
binding.ivIcon7.setImageResource(R.mipmap.ic_guide_item3_icon7)
binding.layoutOption7.tag = item.id
}
}
}
startAnim()
}
private fun startAnim() {
val scaleXHolder = PropertyValuesHolder.ofFloat("scaleX", 0.85f, 1.15f, 0.9f, 1.1f, 0.95f, 1f)
val scaleYHolder = PropertyValuesHolder.ofFloat("scaleY", 0.85f, 1.15f, 0.9f, 1.1f, 0.95f, 1f)

View File

@ -8,6 +8,8 @@ import android.os.Message
import android.text.TextUtils
import com.alipay.sdk.app.PayTask
import com.cheng.blzb.common.Constants
import com.cheng.blzb.event.PayStatusEnum
import com.cheng.blzb.event.PayStatusEvent
import com.example.base.common.RxBus
import com.example.base.extensions.toast
import com.example.base.utils.L
@ -95,7 +97,7 @@ object PayUtils {
override fun handleMessage(msg: Message) {
when (msg.what) {
1001 -> {//支付宝返回参数
val payResult = com.cheng.blzb.utils.pay.PayResult(msg.obj as MutableMap<String, String>?)
val payResult = PayResult(msg.obj as MutableMap<String, String>?)
/**
* 对于支付结果请商户依赖服务端的异步通知结果同步通知结果仅作为支付结束的通知
@ -107,18 +109,18 @@ object PayUtils {
when {
TextUtils.equals(resultStatus, "9000") -> {
// 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
RxBus.defaultInstance.post(com.cheng.blzb.event.PayStatusEvent(com.cheng.blzb.event.PayStatusEnum.PAY_SUCCESS))
RxBus.defaultInstance.post(PayStatusEvent(PayStatusEnum.PAY_SUCCESS))
}
TextUtils.equals(resultStatus, "6001") -> {
// 该笔订单是否真实支付成功,需要依赖服务端的异步通知。
RxBus.defaultInstance.post(com.cheng.blzb.event.PayStatusEvent(com.cheng.blzb.event.PayStatusEnum.PAY_CANCEL))
RxBus.defaultInstance.post(PayStatusEvent(PayStatusEnum.PAY_CANCEL))
}
else -> {
// 该笔订单真实的支付结果,需要依赖服务端的异步通知。
L.d("resultStatus=${resultStatus}")
RxBus.defaultInstance.post(com.cheng.blzb.event.PayStatusEvent(com.cheng.blzb.event.PayStatusEnum.PAY_ERROR, resultInfo))
RxBus.defaultInstance.post(PayStatusEvent(PayStatusEnum.PAY_ERROR, resultInfo))
}
}
}