Skip to content

定向更新

angcyo edited this page Nov 10, 2019 · 2 revisions

定向更新就是:当某一个Item发生变化时, (比如输入框的内容改变了) 这个时候需要通知其他关联Item根据改变做出相应.

举个栗子:

列表中有:

Item1

Item2

Item3

Item4

Item1发生变化时, Item2,3,4可以收到这个变化.

功能使用

实现此需求, 只需要Item1实现isItemInUpdateList方法, 判断需要收到更新通知Item返回true即可.

Item1.isItemInUpdateList = { checkItem, index->
    checkItem == Item2 || checkItem == Item3 || checkItem == Item4
}

checkItem依次是RV界面上显示的每一个Item, index是对应的位置索引. 返回值true表示, checkItem将会收到更新通知.

checkItem收到通知的回调方法是onItemUpdateFromInner, 外部可以通过设置item.onItemUpdateFrom属性实现监听.

源代码如下:

var onItemUpdateFrom: (fromItem: DslAdapterItem) -> Unit = {}
open fun onItemUpdateFromInner(fromItem: DslAdapterItem) {
    onItemUpdateFrom(fromItem)
}

fromItem就是触发此次更新回调的Item,也就是例子中的Item1.

当依赖关系配置好之后, 只需要调用dslAdapterItem.updateItemDepend方法, 触发通知即可.