我有一个EditTexts数组,我希望将其转换为包含每个EditTexts的输入值的字符串数组。这是我的代码:
val textFields = arrayOf<EditText>(dialogView.findViewById(R.id.et_name),
dialogView.findViewById(R.id.et_address), dialogView.findViewById(R.id.et_phoneNo),
dialogView.findViewById(R.id.et_amount), dialogView.findViewById(R.id.et_remark))
如何使用最少的代码获取EditTexts值的字符串数组?
编辑:基本上我想将代码作为函数中的参数。我更愿意在不使用for循环的情况下完成它。也许是一个内联函数,它会将一个数组转换(在函数块中给出)将原始元素的每个元素(EditText)转换为字符串。到目前为止,我找不到任何方法(虽然它可能会显而易见)。
我还需要将其用作vararg
参数。
答案 0 :(得分:2)
Todo,你必须通过执行以下操作将其映射到字符串数组中:
val newTextFieldStringArray = textFields.map { it.text.toString() }
Log.e("TEST", newTextFieldStringArray.toString()) // print it out
注意:强>
map函数返回List。如果您想将其用作vararg
参数,则可以使用toTypedArray()
和点差运算符*
来实现该参数。代码如下:
val varargArray = textFields.map { it.text.toString() }.toTypedArray()
myFunction(*varargArray)
private fun myFunction(vararg list: String) {}