上下文未解决的参考

时间:2019-05-08 06:59:32

标签: android mvvm kotlin android-recyclerview

我正在设置我的 RecyclerView的适配器,并且我需要使用“活动上下文”将其填充到我的 viewmodel 变量中,稍后我将使用它来移动意图。为什么即使我将上下文放在班级中也为什么得到未解决的引用

import http from "k6/http"; import { cheerio, xml2js } from "./vendored-libs.js"; export default function () { const res = http.get("https://loadimpact.com/"); const $ = cheerio.load(res.body); console.log($('head title').text()) var xmlString = '<?xml version="1.0" ?>' + '<items xmlns="http://foo.com">' + ' <item>Foo</item>' + ' <item color="green">Bar</item>' + '</items>' xml2js.parseString(xmlString, function (err, result) { console.log(JSON.stringify(result)); }); } 方法要求输入of()以来,我一直尝试转换为FragmentActivity,但还是一样。

FragmentActivity

我希望上下文将被很好地引用,因为它属于同一类。但它返回错误,如:

class TodoAdapter constructor(x:ArrayList<Notes>, c: Context) : RecyclerView.Adapter<TodoAdapter.Handler>() {
    private var lists:ArrayList<Notes> = x
    private var context:Context = c
    private lateinit var viewmodel:TodoViewModel

    class Handler(private val itemBinding:NotesListBinding): RecyclerView.ViewHolder(itemBinding.root) {
        fun bind(note:Notes){
            itemBinding.dataclass = note
            itemBinding.viewmodel = ViewModelProviders.of(context).get(TodoViewModel::class.java)
            itemBinding.notesCardView.setCardBackgroundColor(note.color)
        }
    }

1 个答案:

答案 0 :(得分:1)

context变量未解析,因为Handler没有对TodoAdapter的引用。为此,您必须将其声明为inner class Handler。虽然您不应该这样做!

viewmodel提供bind

fun bind(note: Notes, viewmodel: TodoViewModel) {
    itemBinding.dataclass = note
    itemBinding.viewmodel = viewmodel
    itemBinding.notesCardView.setCardBackgroundColor(note.color)
}

还可以考虑在数据绑定中设置卡片背景色。