我正在创建使用 jetpack compose 和 mvvm 的演示项目,我创建了包含用户列表的模型类..这些用户显示在列表中,顶部有一个按钮,单击时将新用户添加到列表中...当用户单击按钮时,lambda 会更新有关它的活动,活动会调用 viewmodel 将数据添加到列表并使用 livedata 更新回活动,现在模型收到新数据后,它不会更新有关它的可组合功能,因此不会更新 ui列表未更新.. 这是代码
@Model
data class UsersState(var users: ArrayList<UserModel> = ArrayList())
Run Code Online (Sandbox Code Playgroud)
活动
class MainActivity : AppCompatActivity() {
private val usersState: UsersState = UsersState()
private val usersListViewModel: UsersListViewModel = UsersListViewModel()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
usersListViewModel.getUsers().observe(this, Observer {
usersState.users.addAll(it)
})
usersListViewModel.addUsers()
setContent {
UsersListUi.addList(
usersState,
onAddClick = { usersListViewModel.addNewUser() },
onRemoveClick = { usersListViewModel.removeFirstUser() })
}
}
}
Run Code Online (Sandbox Code Playgroud)
视图模型
class UsersListViewModel {
private val usersList: MutableLiveData<ArrayList<UserModel>> by lazy {
MutableLiveData<ArrayList<UserModel>>() …Run Code Online (Sandbox Code Playgroud)