android - 如何使用用户输入初始化数组?
问题描述
我正在尝试根据用户输入初始化我的数组。假设用户在文本字段中输入了一个项目,然后他们按下添加按钮,我希望文本字段中的字符串进入数组。
class CustomList : AppCompatActivity() {
lateinit var thingsList: MutableList<String>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_custom_list)
addItemBtn.setOnClickListener {
if(item_text_field.text.toString() == "") {
Toast.makeText(this, "Must enter text first", Toast.LENGTH_SHORT).show()
} else {
val item = item_text_field.text.toString()
thingsList = item
}
}
}
}
解决方案
这里不需要lateinit,除非你初始化变量,否则你不能向它添加项目。您可以在需要时使用惰性来初始化它。而MutableList.add()用于将项目添加到列表中。
// thingsList will be initialized whenever accessed for the first time
val thingsList by lazy { mutableListOf<String>() }
addItemBtn.setOnClickListener {
if(item_text_field.text.toString() == "") {
Toast.makeText(this, "Must enter text first", Toast.LENGTH_SHORT).show()
} else {
// use add on the MutableList to add times into it
thingsList.add(item_text_field.text.toString())
}
}
推荐阅读
- javascript - 如何从节点 js 将数据发送到客户端
- android - 在 Expo 或 React Native 中用于 Android Webview 应用程序的 Admob
- inria-spoon - 如何从编译单元获取所有导入语句?
- flutter - 如何制作这个 Flutter Page 幻灯片指示器?
- java - 如何在 mongo db 中执行数据同步
- hyperledger-fabric - Hyperledger Fabric:标记了以下静态检查问题:*** [Makefile:186:linter] 错误 1
- glsl - 超级简单的光线追踪
- agora.io - 已为我的应用集成了 agora.io sdk 进行实时视频通话,但面临与稳定性相关的问题
- three.js - 如何在three.js中从材质中获取纹理偏移?
- javascript - 如何在 NodeJs 中使用 setHeader 设置多个 cookie