在 kotlin android 中从 Application 变量创建单独的 ArrayList
Create separate ArrayList from Application variable in kotlin android
我正在尝试从 Application class 对象中声明的变量复制 List<>
。我的问题是我无法制作单独的副本。我对第二个变量所做的任何更新也会更新应用程序变量。下面是我正在使用的代码:
var app: MyApplication
private var taskItems: ArrayList<TaskItem>? = null
override fun onCreate(savedInstanceState: Bundle?) {
app = applicationContext as MyApplication
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
taskItems = app.selectedTask?.items!!
}
fun updateCount(idx: Int, quantity: Int){
taskItems?.get(idx)?.count = quantity
// This updates both taskItems and app.selectedTask.items
// I want to update only taskItems variable
}
我只想更新函数 updateCount() 中的 taskItems
变量,而不是应用程序变量 app.selectedTask.items
。我已经尝试在 onCreateView 函数中进行以下更改:
尝试 1:
taskItems= ArrayList<TaskItem>(app.selectedTask?.items!!)
尝试2:
taskItems= ArrayList()
taskItems!!.addAll(app.selectedTask?.items!!)
尝试 3:
taskItems= ArrayList()
for (item in app.selectedTask?.items!!) {
taskItems!!.add(item)
}
但是上面代码的 none 对我有用。非常感谢任何帮助。
试试下面的代码:
taskItems= ArrayList()
app.selectedTask?.items!!.forEach {
taskItems.add(it.copy())
}
我正在尝试从 Application class 对象中声明的变量复制 List<>
。我的问题是我无法制作单独的副本。我对第二个变量所做的任何更新也会更新应用程序变量。下面是我正在使用的代码:
var app: MyApplication
private var taskItems: ArrayList<TaskItem>? = null
override fun onCreate(savedInstanceState: Bundle?) {
app = applicationContext as MyApplication
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
taskItems = app.selectedTask?.items!!
}
fun updateCount(idx: Int, quantity: Int){
taskItems?.get(idx)?.count = quantity
// This updates both taskItems and app.selectedTask.items
// I want to update only taskItems variable
}
我只想更新函数 updateCount() 中的 taskItems
变量,而不是应用程序变量 app.selectedTask.items
。我已经尝试在 onCreateView 函数中进行以下更改:
尝试 1:
taskItems= ArrayList<TaskItem>(app.selectedTask?.items!!)
尝试2:
taskItems= ArrayList()
taskItems!!.addAll(app.selectedTask?.items!!)
尝试 3:
taskItems= ArrayList()
for (item in app.selectedTask?.items!!) {
taskItems!!.add(item)
}
但是上面代码的 none 对我有用。非常感谢任何帮助。
试试下面的代码:
taskItems= ArrayList()
app.selectedTask?.items!!.forEach {
taskItems.add(it.copy())
}