android - 类型不匹配:推断类型是 HomeViewModel!但是视图模型!预计
问题描述
大家下午好,我有一个问题,我想知道是什么原因造成的
我的 MainActivity.kt
package com.example.albumapp.ui
import android.os.Bundle
import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.example.albumapp.R
import com.example.albumapp.data.PostModel
import com.example.albumapp.viewmodel.HomeViewModel
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
lateinit var adapter: HomeAdapter
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
**var vm = ViewModelProvider(this)[HomeViewModel::class.java]**
initAdapter()
vm.fetchAllPosts()
vm.postModelListLiveData?.observe(this, Observer {
if (it!=null){
rv_home.visibility = View.VISIBLE
adapter.setData(it as ArrayList<PostModel>)
}else{
Toast.makeText(this, "Failed", Toast.LENGTH_SHORT).show()
}
progress_home.visibility = View.GONE
})
}
private fun initAdapter() {
adapter = HomeAdapter(this)
rv_home.layoutManager = LinearLayoutManager(this)
rv_home.adapter = adapter
}
}
视图模型.kt
class HomeViewModel {
private var homeRepository:HomeRepository?=null
var postModelListLiveData : LiveData<List<PostModel>>?=null
init {
homeRepository = HomeRepository()
postModelListLiveData = MutableLiveData()
}
fun fetchAllPosts(){
postModelListLiveData = homeRepository?.fetchAllPosts()
}
}
我想知道为什么会导致类型不匹配以及如何解决这种类型不匹配?(带有两颗星的线是引起问题的地方)
解决方案
您的 HomeViewModel 应该像这样扩展 ViewModel
class HomeViewModel : ViewModel() {
}
然后试试这个
var homeViewModel =
ViewModelProvider(this).get(HomeViewModel::class.java)
推荐阅读
- html - 不能在 div 内垂直对齐 div?
- wordpress - 如何使用 Wordpress 在 youtube iframe API 上启用 gzip 压缩?
- swift - NumberFormatter 空白字符不是空格 - 因此测试失败
- c++ - 用 boost::lexical_cast 捕获溢出
- r - list.files() 用于从目录中的某些文件夹中获取文件
- javascript - setInterval 函数也在 Angular 6 的其他组件中运行
- java - Oracle Java Prepared Statement 如果不存在则插入
- swift - 无需遍历许多记录即可找到最近的用户
- ios - NSAttributed 字符串用竖线显示引号
- angular - Angular (6) 根据 API 值在页面加载时将多个复选框标记为选中或未选中