上面提到的课时小管家,我该怎么创建viewmodel,帮我写一份示例代友
时间: 2024-09-19 14:04:29 浏览: 39
ViewModel + LiveData + DataBinding 综合使用示例
在Android Architecture Components中,ViewModel用于存储并管理UI相关的数据,它可以在Activity、Fragment或LiveDataObserver之间共享。如果你正在构建一个名为"课时小管家"的ViewModel,首先你需要创建一个对应的ViewModel类,并在其中定义你的数据和操作。
以下是一个简单的例子,假设我们有一个课程列表,每个课程有名称和ID:
```kotlin
import androidx.lifecycle.ViewModel
import java.util.List
class CourseHourViewModel : ViewModel() {
private var coursesList: MutableLiveData<List<Course>> = MutableLiveData()
fun fetchCourses() {
// 这里你可以从数据库获取课程列表,实际应用中可能通过Repository实现
val coursesFromDatabase = getCoursesFromDatabase()
coursesList.postValue(coursesFromDatabase)
}
// LiveData暴露给外部,当数据变化时通知UI
val courses: LiveData<List<Course>> get() = coursesList
// 省略数据库访问逻辑,这里只是一个模拟
private fun get CoursesFromDatabase(): List<Course> {
// 你需要实现具体的数据库查询
return listOf(Course("课程1", 1), Course("课程2", 2))
}
}
```
在这个例子中,`fetchCourses()`方法用于从数据源获取课程数据,然后更新`coursesList`。外部可以通过`courses` LiveData订阅来观察数据的变化。
要使用ViewModel,通常在对应Activity或Fragment中这样设置:
```kotlin
val viewModel = ViewModelProvider(this).get(CourseHourViewModel::class.java)
viewModel.fetchCourses().observe(this, Observer { courses ->
// UI 更新部分
coursesAdapter.submitList(courses)
})
```
阅读全文