小编Chi*_*ekh的帖子

当点击 recyclerview 项时如何更新 viewModel 的实时数据

我是 Kotlin 新手,我正在尝试使用 MVVM 创建应用程序。所以我想做的是使用存储库中的改造进行网络调用,并将数据返回到视图模型,然后观察片段中的数据,一旦数据发生变化,我就会将其通知回收器视图适配器,一切都会发生工作正常。现在,问题是我想从 recyclerview 更新 ViewHolder 的实时数据。当我单击 recyclerView 中的复选框时,应该更新数据。但我不知道这样做的实际方法是什么。

这是我的 ViewHolder。

class MainActivityViewModel : ViewModel() {

private var mutableLiveGitUsers: MutableLiveData<ArrayList<GitUsers>>? = null
private lateinit var gitUsersRepository: GitUsersRepository
var allUsersListener: AllUsersListener? = null

fun init() {

    gitUsersRepository = GitUsersRepository()
    allUsersListener?.onStarted()
    mutableLiveGitUsers = gitUsersRepository.getGitUsers()
    allUsersListener?.onSuccess(mutableLiveGitUsers!!)
}

fun getGitUsersData(): MutableLiveData<ArrayList<GitUsers>>? {
    return mutableLiveGitUsers
}
Run Code Online (Sandbox Code Playgroud)

}

这是我观察片段变化的方式

mutableLiveGitUsers.observe(this, Observer {
        progressBar.hide()
        rvAllUsersAdapter = AllUsersAdapter(mainActivityViewModel.getGitUsersData()?.value!!)
        rvAllUsers.adapter = rvAllUsersAdapter
        rvAllUsersAdapter.notifyDataSetChanged()
    })
Run Code Online (Sandbox Code Playgroud)

RecylerView 适配器

class AllUsersAdapter(private var gitUsersArrayList: ArrayList<GitUsers>) :
RecyclerView.Adapter<AllUsersAdapter.AllUsersViewHolder>() {

override fun onCreateViewHolder(parent: …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-recyclerview android-mvvm android-livedata

5
推荐指数
1
解决办法
6010
查看次数