Android 如何扩展&x27;文本视图';通过使用';标签';?
我试着用Android/Kotlin编写一个12枚硬币的游戏。 硬币由文本视图制作,并在运行时创建。到目前为止一切正常Android 如何扩展&x27;文本视图';通过使用';标签';?,android,kotlin,Android,Kotlin,我试着用Android/Kotlin编写一个12枚硬币的游戏。 硬币由文本视图制作,并在运行时创建。到目前为止一切正常 fun createCoin(coinNumber: Int) : TextView { val createdCoin = AppCompatTextView(this) createdCoin.background = ContextCompat.getDrawable(this, R.drawable.simple_circle) crea
fun createCoin(coinNumber: Int) : TextView {
val createdCoin = AppCompatTextView(this)
createdCoin.background = ContextCompat.getDrawable(this, R.drawable.simple_circle)
createdCoin.gravity = Gravity.CENTER
createdCoin.layoutParams = FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT)
createdCoin.text = (coinNumber +1).toString()
createdCoin.textSize = 20F
createdCoin.setTextColor(Color.BLACK)
createdCoin.tag = ??????
return createdCoin
}
但现在我需要用每枚硬币多保存2条信息
enum class coinState{
UNKNOWN,
TRUE,
FALSE,
Up,
DOWN
}
是否有可能将这两个信息存储在对象/类中,并将其分配给文本视图中的标记。还是有其他简单的方法
谢谢你的帮助
Jan无需任何努力和附加类即可保存2个对象的方法:
tag = Pair(5, coinState.DOWN)
有一个简单的方法。
您可以使用一个特殊的delimeter连接字符串,然后通过delimeter拆分将其作为参数数组读取
您也可以像上面的答案一样使用配对。如果没有超过2个的参数
或者您可以创建自己的模型
data class CoinParams(var name1: Type1, var name2: Type2, ....)
createdCoin.tag = CoinParams(1, "Some value", ...)
val params: CoinParams = createdCoin.tag as CoinParams
字符串示例:
createdCoin.tag = "$value1||$value2"
params = createdCoin.tag.split("||")
我喜欢成对的解决方案。你的代码行正在运行!但我以后如何读取值呢?我怎样才能将coinState这样的值改为UP?myCoin.标签。。。。?未显示对数据。感谢您的帮助。是要阅读Pair
您可以使用val pairObject=view.tag
并获取其值。您可以为此标记设置新的对,而不是进行修改。在读取对象的标记时,您应该确保这是设置数据时使用的同一对象。感谢此解决方案。我更喜欢成对的解决方案。但是如果我不能让它工作,那么字符串或类是一个替代方案。谢谢
tex.tag=Triple("x",3,5)
var tagLogin= loginAsTv.tag as Triple<String,Int,Int>
println("tag ${tagLogin.first}")
eg tag= position_coinindex