小编Kus*_*ave的帖子

模型中列表的值已更新,但未反映在可组合函数上

我正在创建使用 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)

android android-jetpack android-jetpack-compose

5
推荐指数
2
解决办法
2944
查看次数