Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何扩展&x27;文本视图';通过使用';标签';?_Android_Kotlin - Fatal编程技术网

Android 如何扩展&x27;文本视图';通过使用';标签';?

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

我试着用Android/Kotlin编写一个12枚硬币的游戏。 硬币由文本视图制作,并在运行时创建。到目前为止一切正常

   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条信息

  • posIndex:Int
  • 州:硬币州
  • 枚举:

        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