BindingListAdapter
BindingListAdapter copied to clipboard
局部刷新
大佬,对列表中的其中一项里的某个字段或者某几个字段进行局部刷新,请问有比较好的实现方式吗?整项刷新的话导致画面闪烁,不是太美观
很简单的,用DataBinding的ObservableField可以完美达到你的要求
具体操作就是
// ItemViewModel
class ItemViewModel{
val text = ObservableField<String>("")
}
//item.xml
<layout>
<variable value="item" type="ItemViewModel"/>
<LinearLayout>
<TextView
android:text="@{item.text}"/>
</LinearLayout>
</layout>
// activity
class TestActivity extends AppCompactActivity{
val list = arrlistof<ItemViewModel>()
val mAdapter by lazy {
SingleTypeAdapter(mContext,R.layout.item,list)
}
onCreate(){
mBinding.recyclerView.adapter = mAdapter
}
//当需要改变一行中的数据或者某个字段的时候
// 通过index :位置 找到相应的ItemViewModel
fun change(index:int){
//通过ObservableField调用set方法直接就可以更新UI了
list[index].text.set("new Text")
}
}
相关原理:https://mp.weixin.qq.com/s/b6bekB39rLaYd_9wfVXZRw