Добавить пользовательское свойство для Android View с помощью Kotlin? - PullRequest
0 голосов
/ 04 июня 2019

Я знаю, что можно создать пользовательские свойства с помощью Kotlin, создав собственный класс, но можно ли назначить пользовательское свойство для Android View без расширения класса View?

I 'я пытаюсь создать свойство order, которое будет 1, 2 или 3:

fun View.setOrder(order: Int){
    // not sure what to put here
}

Есть идеи?

1 Ответ

2 голосов
/ 04 июня 2019

Я пытаюсь создать свойство заказа, которое будет 1, 2 или 3

Ваш синтаксис предназначен для функции расширения, а не для свойства расширения.

Если вы хотите расширение var, используйте:

var View.order: Int
  get() = getTag(R.id.tag_order) as Int
  set(value: Int) = setTag(R.id.tag_order, value)

где вы определяете ресурс id с именем tag_order. Нам нужно, чтобы теги представления были уникальными для всего приложения, а различные библиотеки используют теги, поэтому ресурс id дает вам значение, которое не должно вступать в противоречие с данными других пользователей. Таким образом, у вас будет res/values/ids.xml (или любой другой) файл с:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <id name="tag_order" />
</resources>

Если значение будет 1, 2 или 3, тем не менее, вероятно, вам следует использовать enum class вместо Int.

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