Commit 0e269007 authored by shiyl's avatar shiyl

1. 新建Json2Map的工具方法,用于解析h5传递的参数

2. 新建格式化保留2位小数的工具方法
parent 060e6c08
......@@ -5,6 +5,10 @@ import android.content.res.AssetManager
import java.io.BufferedReader
import java.io.IOException
import java.io.InputStreamReader
import org.json.JSONObject
import org.json.JSONArray
/**
* JSON解析工具类
......@@ -31,4 +35,33 @@ object JsonUtils {
return null
}
/**
* 将json对象转换为HashMap
* @param json
* @return
*/
fun parseJSON2Map(json: JSONObject): Map<String, Any> {
val map: MutableMap<String, Any> = HashMap()
// 最外层解析
for (k in json.keys()) {
when (val v = json[k]) {
is JSONArray -> {// 如果内层还是json数组的话,继续解析
val list: MutableList<Map<String, Any>> = ArrayList()
for (i in 0 until v.length()) {
val jsonObject = v.getJSONObject(i)
list.add(parseJSON2Map(jsonObject))
}
map[k.toString()] = list
}
is JSONObject -> {// 如果内层是json对象的话,继续解析
map[k.toString()] = parseJSON2Map(v)
}
else -> {// 如果内层是普通对象的话,直接放入map中
map[k.toString()] = v
}
}
}
return map
}
}
package com.yidian.bcommon.utils
import java.text.NumberFormat
object NumberUtils {
/**
* 数字格式化
* 默认保留2位小数
*/
fun decimalFormat(num: Double, reservedLength: Int = 2): String {
val nf: NumberFormat = NumberFormat.getNumberInstance()
nf.maximumFractionDigits = reservedLength
return nf.format(num)
}
}
......@@ -7,6 +7,7 @@ import com.yidian.bcommon.constant.GlobalConstants
import com.yidian.bcommon.constant.RunConfig
import com.yidian.bcommon.services.ZapServiceActionConstants
import com.yidian.bcommon.services.ZapServiceNameConstants
import com.yidian.bcommon.utils.JsonUtils
import com.yidian.bcommon.utils.UMConfigUtils
import com.yidian.news.util.ProcessUtil
import com.yidian.xarc.xbase.utils.XLogger
......@@ -102,18 +103,14 @@ object BaseInitConfig {
*/
XBridManager.registerXPageInvoker(object : OnXPageInvoke {
override fun onCall(identifier: String, xWebView: XWebView, request: XPageRequest) {
// 将传递的参数整合到新建的map中,如果下游页面需要的参数是JSONObject需要将JSONObject作为map的value传递
val params = mutableMapOf<String, Any>()
(request.params as JSONObject).let { reParams ->
reParams.keys().forEach {
params[it] = reParams[it]
}
}
// 将传递的参数整合到新建的map中
val jsonObject = request.params as JSONObject
val paramsMap = JsonUtils.parseJSON2Map(jsonObject)
when (request.action) {
"push" -> XPageManager.push(request.name, params)
"pop" -> XPageManager.pop(params)
"popTo" -> XPageManager.popTo(request.name, params)
"popToRoot" -> XPageManager.popToRoot(params)
"push" -> XPageManager.push(request.name, paramsMap)
"pop" -> XPageManager.pop(paramsMap)
"popTo" -> XPageManager.popTo(request.name, paramsMap)
"popToRoot" -> XPageManager.popToRoot(paramsMap)
}
}
})
......
......@@ -9,6 +9,7 @@ import com.bumptech.glide.load.resource.bitmap.RoundedCorners
import com.bumptech.glide.request.RequestOptions
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder
import com.yidian.bcommon.utils.NumberUtils
import com.yidian.news.util.DensityUtil
import com.yidian.shenghuoquan.buserorder.R
import com.yidian.shenghuoquan.buserorder.dto.GoodsDto
......@@ -22,7 +23,7 @@ class OrderConfirmCommodityListAdapter : BaseQuickAdapter<GoodsDto, BaseViewHold
override fun convert(holder: BaseViewHolder, item: GoodsDto) {
holder.getView<TextView>(R.id.tv_commodity_name).text = item.goodsName
holder.getView<TextView>(R.id.tv_commodity_count).text = "共" + item.goodsNum + "件"
holder.getView<TextView>(R.id.tv_commodity_amount).text = "¥" + item.price
holder.getView<TextView>(R.id.tv_commodity_amount).text = "¥" + NumberUtils.decimalFormat(item.price)
val ivCommodityPic = holder.getView<ImageView>(R.id.iv_commodity_pic)
Glide.with(context).load(item.picUrl)
.apply(
......
......@@ -6,7 +6,6 @@ import com.yidian.bcommon.constant.IntentConstants
import com.yidian.bcommon.constant.XEventConfig
import com.yidian.bcommon.constant.XRouterPathConstants
import com.yidian.bcommon.mvvm.BaseMvvmActivity
import com.yidian.bcommon.utils.JsonUtils
import com.yidian.shenghuoquan.buserorder.R
import com.yidian.shenghuoquan.buserorder.adapter.OrderConfirmCommodityListAdapter
import com.yidian.shenghuoquan.buserorder.databinding.BorderActivityConfirmOrderBinding
......@@ -22,12 +21,13 @@ import com.pingplusplus.android.Pingpp
import com.pingplusplus.android.Pingpp.REQUEST_CODE_PAYMENT
import com.yidian.bcommon.utils.ToastUtils
import com.yidian.shenghuoquan.buserorder.viewmodel.ConfirmOrderViewModel
import com.yidian.xpage.XPageViewProtocol
/**
* 确认订单
*/
class ConfirmOrderActivity : BaseMvvmActivity<BorderActivityConfirmOrderBinding, ConfirmOrderViewModel>() {
class ConfirmOrderActivity : BaseMvvmActivity<BorderActivityConfirmOrderBinding, ConfirmOrderViewModel>(), XPageViewProtocol {
private var marketingId: String? = null// 活动id
......@@ -37,8 +37,11 @@ class ConfirmOrderActivity : BaseMvvmActivity<BorderActivityConfirmOrderBinding,
override val vm: ConfirmOrderViewModel by viewModels()
override fun getXPageName(): String {
return XRouterPathConstants.CONFIRM_ORDER_ACTIVITY
}
override fun initView() {
ToastUtils.showShortSafe("进入确认订单了")
XEventManager.register(this)
subscribeUiEvent()
initList()
......@@ -53,11 +56,9 @@ class ConfirmOrderActivity : BaseMvvmActivity<BorderActivityConfirmOrderBinding,
val params = intent?.getSerializableExtra(XRouterPathConstants.ParamsKey)
if (params != null) {
// 注意接收h5传过来的JSONObject
// params as HashMap<String, Any?>
params as JSONObject
// TODO 修改为h5传递的参数
parsingParameters(params)
params as HashMap<String, Any?>
// 解析h5传递的参数
parsingParameters(JSONObject(params))
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment