Kotlin 获取应用程序计费库中的价格

Kotlin 获取应用程序计费库中的价格,kotlin,in-app-purchase,in-app-billing,Kotlin,In App Purchase,In App Billing,我的apk上传到alpha频道,我的产品被创建,购买按钮(如果有效) 我正试着在一个回收站展示几款可以购买的产品。这些东西对我有用我不能做的是显示产品的价格和名称。 在我的myadapter.kt文件中,我有以下varvar p=ArrayList()和函数: fun queryskudetails() { billingClient = BillingClient.newBuilder(context).setListener(this).build() bi

我的apk上传到alpha频道,我的产品被创建,购买按钮(如果有效)

我正试着在一个回收站展示几款可以购买的产品。这些东西对我有用我不能做的是显示产品的价格和名称。

在我的
myadapter.kt
文件中,我有以下var
var p=ArrayList()
和函数:

fun queryskudetails() {

        billingClient = BillingClient.newBuilder(context).setListener(this).build()
        billingClient.startConnection(object : BillingClientStateListener {
            override fun onBillingServiceDisconnected() {
                Log.i("Disconnected", "billing client")
            }

            override fun onBillingSetupFinished(responseCode: Int) {

                billingClient.let { billingClient ->


                    val skulist = ArrayList<String>()
                    skulist.add("books")
                    skulist.add("pens")
                    skulist.add("keychains")

                    val params = SkuDetailsParams.newBuilder()
                    params.setSkusList(skulist).setType(BillingClient.SkuType.INAPP)
                    billingClient.querySkuDetailsAsync(params.build(), { responseCode, skuDetailsList ->

                        if (responseCode == BillingClient.BillingResponse.OK && skuDetailsList != null) {

                            for (skuDetails in skuDetailsList) {
                                val sku = skuDetails.sku
                                val price = skuDetails.price
                                Log.i("skudetails", sku)
                                Log.i("skuprice", price)
                                hashMap[sku] = price

                                println("===== price and sku ======")
                                println(price)
                                println(sku)
                                println("===== /proce and sku ======")

                                // add price to array p1 (defined as a global variable)
                                p1.add(price)

                            }

                           p = precios
                        }


                    })
                }


            }

        })
    }
当我在文本视图中显示价格时,以下代码不适用于我:
holder.Price.text=hashMap[text.toLowerCase()].toString()
其中
Price
var-Price:TextView=itemView.findViewById(R.id.Price)

作为第二个选项,我尝试使用矩阵
p1
,其中我将所有价格存储在
queryskudetails()
函数中,但它返回空值


如何使用数组的内容
p1

价格存储在地图中:
hashMap
,要恢复它,请使用sku(google play控制台中的标识符)


正如我在你的代码中看到的那样,holder.Price.text=hashMap[text.toLowerCase()].toString()(在变量
text
中,你必须有标识符(标识符=sku)才能恢复每个产品的价格),这是正确的,请检查另一部分是否没有冲突或重复过。

如果它现在对我有效,我在变量
文本中遇到问题,非常感谢
override fun onBindViewHolder(holder: Vholder, position: Int) {
        queryskudetails()

        print("-----Here array price print [] -----")
        println (p)


        var text: String = array[position]
        Log.i("text", text)
        holder.textView.text = text
        holder.Price.text = hashMap[text.toLowerCase()].toString() // this does not work for me, retun null 
        Log.i("price", hashMap["books"].toString())

        println(hashMap[array[position]]) // retunr null

        holder.btn.setOnClickListener(View.OnClickListener {
            Log.i("button", text.toLowerCase())
            var skuid = hashMap2[text]

            val flowParams = BillingFlowParams.newBuilder()
                    .setSku(text.toLowerCase())
                    .setType(BillingClient.SkuType.INAPP) 

                    .build()
            val responseCode = billingClient.launchBillingFlow(context as Activity?, flowParams)


        })
    }
hashMap = {sku1=USD 3.99, sku2=USD 1.99, sku3=USD 3.99}

//to recover the values according to the sku (key)
hashMap[sku1] = USD 3.99
hashMap[sku2] = USD 1.99