Следует ли нам избегать использования типизированных массивов в Kotlin? Если да, есть ли более новый способ заменить типизированный массив в Kotlin? - PullRequest
0 голосов
/ 03 апреля 2020

Вот мой код, где этот класс используется для раздувания представления. Я использую типизированный массив здесь. Есть ли другой способ написать код без использования типизированного массива .

 class CalculatorInputView(context: Context, attributeSet: AttributeSet) :
    RelativeLayout(context, attributeSet) {

    init {
        LayoutInflater.from(context).inflate(R.layout.view_calculator_input, 
       this, true)

        //attribute set
        attributeSet.run {
            val typedArray: TypedArray =
                context.obtainStyledAttributes(
                    attributeSet,
                    R.styleable.CalculatorInputView
                )
            val textResource: String? =
                typedArray.getString(R.styleable.CalculatorInputView_item_text)

        }
    }
}

1 Ответ

2 голосов
/ 03 апреля 2020

Есть ли другой способ написать этот код без использования типизированного массива.

Нет, поскольку класс TypedArray должен содержать приписанные значения Android ресурсы.

Однако , вы можете использовать расширения Android KTX Core in Kotlin, чтобы сделать его короче:

context.withStyledAttributes(attributeSet, R.styleable.CalculatorInputView) {
   val textResource = getString(R.styleable.CalculatorInputView_item_text)
}

Помните, что вам нужно включить их в ваш build.gradle:

implementation "androidx.core:core-ktx:1.2.0"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...