Установите id для EditText в Kotlin - PullRequest
0 голосов
/ 28 сентября 2018

Я получаю некоторые данные из REST API (json) из WordPress.

С этими данными я создаю EditText и добавляюзначение API в EditText.Я хочу установить идентификатор, чтобы два из созданного мной EditText могли использоваться друг другом (для расчета: цена * количество)

Но когда я пытаюсь добавить идентификатор, AndroidСтудия говорит, что это должен быть 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 голосов
/ 29 сентября 2018

Это ваш пример:

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

Это не работает, потому что '5' не является допустимым идентификатором, потому что идентификатор должен быть шестнадцатеричным int и должен отличаться от идентификатора других представлений.,Поэтому лучший способ достичь своей цели - сделать что-то вроде этого:

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

В соответствии с документами для View.generateViewId():

Создать значение, подходящее для использования в setId(INT).Это значение не будет конфликтовать со значениями идентификатора, сгенерированными во время сборки aapt для R.id.

Но я не знаю, зачем вам нужен «тестовый» EditText, так что у вас будет2 Объект EditText, который ссылается на то же представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...