我有notifyDataSetChanged()
后跟notifyItemChanged(0, Unit)
,其有效负载被称为同一适配器,其中包含3个项目。
每个呼叫都在view.post()
内部进行。
我希望onBindViewHolder()
被调用4次:notifyDataSetChanged()
被调用3次,notifyItemChanged()
被调用一次
实际上,它被调用了3次,所有载荷都为空。
但是,如果我将view.post()
上的view.postDelayed({notifyItemChanged(0, Unit)}, 1000)
替换掉,那么一切都会像个魅力。
您能解释一下,为什么会这样吗?
答案 0 :(得分:0)
正如Google文档中记录的那样:
Post:post导致将Runnable添加到消息队列中。 PostDelayed:导致将Runnable添加到消息队列中,并在经过指定的时间后运行。
在您的情况下,view.post导致runnable立即执行,这就是您面对此行为的原因,而在postDelayed的情况下,使用时间回收器视图需要花费一定的时间来回收或更新项目。 / p>