视图模型(ViewModel)是一种设计模式,主要用于分离用户界面(UI)的数据和逻辑,使其与UI组件(如Activity、Fragment)解耦。这种模式有助于保持代码的清晰性和可维护性,尤其是在处理配置更改(如屏幕旋转)时。
以下是一个简单的示例,展示如何在ViewModel中使用MutableList,并将其与UI组件绑定。
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
class MyViewModel : ViewModel() {
// 使用MutableLiveData来包装MutableList
private val _items = MutableLiveData<MutableList<String>>()
val items: LiveData<MutableList<String>> get() = _items
init {
// 初始化列表
_items.value = mutableListOf()
}
fun addItem(item: String) {
// 获取当前的列表并添加新项目
val currentList = _items.value?.toMutableList() ?: mutableListOf()
currentList.add(item)
_items.value = currentList
}
}
在Activity或Fragment中使用ViewModel:
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
private lateinit var viewModel: MyViewModel
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
viewModel = ViewModelProvider(this).get(MyViewModel::class.java)
// 观察items的变化并更新UI
viewModel.items.observe(this, Observer { items ->
// 更新UI,例如更新ListView或RecyclerView的适配器
item_list.adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, items)
})
// 添加按钮点击事件
add_button.setOnClickListener {
viewModel.addItem("New Item")
}
}
}
synchronized
)来解决。通过以上示例和解释,你应该能够理解如何在ViewModel中使用MutableList,并解决相关的问题。
领取专属 10元无门槛券
手把手带您无忧上云