使用 Kotlin 无法将 java.lang.String 类型的值转换为 int
Failed to convert a value of type java.lang.String to int using Kotlin
我正在尝试从我的收藏品中找出一些总价,但似乎某处数据不匹配我无法解决,所以如果有人能帮助我这样做,我将不胜感激
val id = auth.currentUser?.uid.toString()
dref = FirebaseDatabase.getInstance().getReference("tempCart").child(id)
dref.addValueEventListener(object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
if(snapshot.exists()){
for (cartSnapshot in snapshot.children){
val cart = cartSnapshot.getValue(CartData::class.java)
cartList.add(cart!!)
toto = cartSnapshot.child("totalPrice").getValue(Int::class.java)!!
toto += toto
}
orderCost.text = toto.toString()
cartRecycler.adapter = cartAdapter
}
}
override fun onCancelled(error: DatabaseError) {
TODO("Not yet implemented")
}
})
我已经尝试过几次通过在线阅读指南来修复它,他们正在将数据从 firebase 更改为整数,但是当我这样做时它告诉我我不能将 java.lang.string
转换为 int
您的总价可能是一个数值,但您将其作为字符串存储在数据库中。因此,您必须从数据库中读取该字符串值,然后将其转换为数字:
val str = cartSnapshot.child("totalPrice").getValue(String::class.java)!!
val value = str.toInt();
toto += value
我强烈建议将 totalPrice
作为数字存储在数据库中,因为最好从源头上解决此类类型转换问题。
我正在尝试从我的收藏品中找出一些总价,但似乎某处数据不匹配我无法解决,所以如果有人能帮助我这样做,我将不胜感激
val id = auth.currentUser?.uid.toString()
dref = FirebaseDatabase.getInstance().getReference("tempCart").child(id)
dref.addValueEventListener(object : ValueEventListener {
override fun onDataChange(snapshot: DataSnapshot) {
if(snapshot.exists()){
for (cartSnapshot in snapshot.children){
val cart = cartSnapshot.getValue(CartData::class.java)
cartList.add(cart!!)
toto = cartSnapshot.child("totalPrice").getValue(Int::class.java)!!
toto += toto
}
orderCost.text = toto.toString()
cartRecycler.adapter = cartAdapter
}
}
override fun onCancelled(error: DatabaseError) {
TODO("Not yet implemented")
}
})
我已经尝试过几次通过在线阅读指南来修复它,他们正在将数据从 firebase 更改为整数,但是当我这样做时它告诉我我不能将 java.lang.string
转换为 int
您的总价可能是一个数值,但您将其作为字符串存储在数据库中。因此,您必须从数据库中读取该字符串值,然后将其转换为数字:
val str = cartSnapshot.child("totalPrice").getValue(String::class.java)!!
val value = str.toInt();
toto += value
我强烈建议将 totalPrice
作为数字存储在数据库中,因为最好从源头上解决此类类型转换问题。