Правильно расширить класс Widget с помощью Kotlin

Код ниже в основном изменяет состояние виджета Button:

enum class State { unable, enable } fun configureState(currentState:State, button:Button ,colorInt :Int = Color.BLACK) = when (currentState) { State.unable -> { button.isClickable = false button.setBackgroundColor(Color.LTGRAY) button.setTextColor(Color.WHITE) } State.enable -> { button.isClickable = true button.setBackgroundColor(colorInt) button.setTextColor(Color.WHITE) } } 

Цель состоит в том, чтобы расширить Button Widget и избежать повторения кода во всех моих действиях.

Да, это просто просто расширить через функцию, если у меня не было состояния enum State , сделав что-то вроде этого:

 fun Button.configureState(state:Int) = when(state) { 0 -> { //do unable stuff } 1 -> { // do enable stuff } else -> { // do nada } } 

Мой вопрос будет правильным способом расширения с состоянием перечисления, где я мог бы получить к нему доступ через функцию расширения, например:

 fun Button.configureWith(state: this.State) = when (state) { this.State.unable -> { } this.State.enable -> { } } 

PS снова: я новичок в Kotlin :), любые идеи .. все приветствуются 🙂

Ваш код рассматривает State как параметр только для изменения состояния кнопки. Это не обязательно должно быть объявлено внутри подкласса Button. Вы можете объявить его вне его с помощью функции расширения.

 enum class ButtonState { unable, enable } fun Button.configureWith(state: ButtonState, colorInt: Int = Color.BLACK) = when (state) { ButtonState.unable -> { clickable = false setBackgroundColor(Color.LTGRAY) } ButtonState.enable -> { clickable = true setBackgroundColor(colorInt) } }