首页 > 解决方案 > 类型不匹配:推断类型是 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()
    }
}

我想知道为什么会导致类型不匹配以及如何解决这种类型不匹配?(带有两颗星的线是引起问题的地方)

标签: androidkotlin

解决方案


您的 HomeViewModel 应该像这样扩展 ViewModel

class HomeViewModel : ViewModel() {
}

然后试试这个

var homeViewModel =
            ViewModelProvider(this).get(HomeViewModel::class.java)

推荐阅读