我正在使用 Kotlin 和 MVVM 架构开发 Android 笔记应用程序。在 RecyclerView 中使用数据绑定时,我面临持续的类型不匹配错误,即使代码看起来是正确的。
错误信息
Assignment type mismatch: actual type is 'com.im_oregano007.noteit.Notes.Note', but 'Notes.Note?' was expected.
代码片段:
package com.im_oregano007.noteit.Notes
import androidx.room.Entity
import androidx.room.PrimaryKey
import java.util.Date
@Entity(tableName = "notes")
data class Note(
@PrimaryKey(autoGenerate = true)
val id : Int,
var title : String,
var value : String,
val date: Date)
<layout ...>
<data>
<variable
name="n"
type="com.im_oregano007.noteit.Notes.Note" />
</data>
...
</layout>
class NotesAdapter(...) : RecyclerView.Adapter<...> {
...
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
val cNote = noteList[position]
holder.binding.n = cNote
...
}
}
class MainViewModel(val notesRepository: NotesRepository) : ViewModel() {
var notesLiveData : LiveData<List<Note>> = notesRepository.getAllNotes()
}
mainViewModel.notesLiveData.observe(this, Observer {
if (notesAdapter != null){
notesAdapter!!.updatedNotes(it)
} else {
notesAdapter = NotesAdapter(this,it)
setUpRecyclerV()
}
})
我尝试过的:
尽管做出了这些努力,类型不匹配错误仍然存在。是什么原因导致此问题以及如何解决? 任何帮助将不胜感激!
Note 类在包中
com.im_oregano007.noteit.Notes
但是,在RecyclerView Item Layout中,你已经使用了
type="com.im_oregano007.noteit.Notes.Note"
错误是因为你使用了错误的包名