我们应该避免在 Kotlin 中使用类型化数组吗?如果是,有没有更新的方法来替换 Kotlin 中的类型化数组?

Swe*_*ain 1 typed-arrays kotlin

这是我的代码,该类用于扩充视图。我在这里使用类型化数组。有没有其他方法可以在不使用类型化数组的情况下编写此代码。

 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)

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Gio*_*oli 5

有没有其他方法可以在不使用类型化数组的情况下编写此代码。

不,因为TypedArray该类负责包含 Android 资源的属性值。

但是,您可以使用Kotlin 中的Android KTX Core 扩展来缩短它:

context.withStyledAttributes(attributeSet, R.styleable.CalculatorInputView) {
   val textResource = getString(R.styleable.CalculatorInputView_item_text)
}
Run Code Online (Sandbox Code Playgroud)

请记住,您需要将它们包含在您的build.gradle:

implementation "androidx.core:core-ktx:1.2.0"
Run Code Online (Sandbox Code Playgroud)