在Kotlin中将id设置为EditText

时间:2018-09-28 12:41:43

标签: android kotlin

我从wordpress的 REST API (json)获取一些数据。

使用这些数据,我正在创建一些 EditText ,并将API的值添加到EditText中。我想设置一个ID,以便我创建的两个EditText可以互相使用(以计算为准:价格*数量)

但是,当我尝试添加ID时,Android Studio表示它必须为 int (与我们在XML中所做的不同,这是通常的用法吗?)。

val input = EditText(this)
input.id = id //dynamically equals 5
val test = findViewById<EditText>(5) //5 as ID is not working...

我在这方面想念什么?

1 个答案:

答案 0 :(得分:1)

这是您的示例:

val editText = EditText(this)
editText.id = 5
val test = findViewById<EditText>(5)

这不起作用,因为'5'不是有效的ID,因为ID必须是十六进制int,并且必须与其他视图的ID不同。因此,达到目标的更好方法是执行以下操作:

val editText = EditText(this)
editText.id = View.generateViewId()
val test = findViewById<EditText>(editText.id)

根据View.generateViewId()的文档:

  

生成一个适合在setId(int)中使用的值。此值不会与Aapt for R.id在生成时生成的ID值冲突。

但是我不知道为什么需要“测试” EditText,这样您将拥有2个EditText对象,它们引用相同的View。