我正在设置我的 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)
}
}
答案 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)
}
还可以考虑在数据绑定中设置卡片背景色。