Skip to content
angcyo edited this page Nov 13, 2019 · 1 revision

1. 如何让每次操作都是同步执行的?

只需要配置属性defaultFilterParams:

dslAdapter.defaultFilterParams = FilterParams(async = false, just = true)

FilterParams源码定义如下:

data class FilterParams(
    /**
     * 触发更新的来源, 定向更新其子项.
     * */
    val formDslAdapterItem: DslAdapterItem? = null,
    /**
     * 异步计算Diff
     * */
    var async: Boolean = true,
    /**
     * 立即执行, 不检查抖动
     * */
    var just: Boolean = false,
    /**
     * 只过滤列表数据, 不通知界面操作, 开启此属性.[async=true][just=true]
     * */
    var justFilter: Boolean = false,
    /**
     * 前提, Diff 之后, 2个数据列表的大小要一致.
     *
     * 当依赖的[DslAdapterItem] [isItemInUpdateList]列表为空时, 是否要调用[dispatchUpdatesTo]更新界面
     * */
    var updateDependItemWithEmpty: Boolean = true
)

2. 如何默认选中指定的Item?

首先开启选择模式:

dslAdapter.itemSelectorHelper.selectorModel = MODEL_SINGLE

进行选项操作:

dslAdapter.onDispatchUpdatesAfterOnce = {
    it.itemSelectorHelper.selector(0)//请在这个回调方法中, 执行选择操作.
}

因为dslAdapter异步操作数据源, 所有需要在异步操作结束之后才能操作界面数据.

onDispatchUpdatesAfterOnce触发一次之后, 就会被置空, 所以不用担心操作会被污染.