LazyForEach从提供的数据源中按需迭代数据,并在每次迭代过程中创建相应的组件。当在滚动容器中使用了LazyForEach,框架会根据滚动容器可视区域按需创建组件,当组件滑出可视区域外时,框架会进行组件销毁回收以降低内存占用。
求关注
public class DataChangeListener <: RemoteData {
func onDataReloaded(): Unit
func onDataAdd(index: Int64): Unit
func onDataDelete(index: Int64): Unit
func onDataChange(index: Int64): Unit
func onDataMove(fromIdx: Int64, toIdx: Int64): Unit
}
构造函数
init(IDataSource, (T, Int64) -> Unit,(T, Int64) -> String)
public init(dataSource: IDataSource, itemGeneratorFunc!: (T, Int64) -> Unit, keyGeneratorFunc!: (T, Int64) -> String)
构建一个LazyForEach对象。
参数名 | 参数类型 | 必填 | 默认值 | 描述 |
---|---|---|---|---|
dataSource | IDataSource | 是 | - | LazyForEach数据源,需要开发者实现相关接口。 |
itemGeneratorFunc | (T, Int64) -> Unit | 是 | - | 子组件生成函数,为数组中的每一个数据项创建一个子组件。lambda函数的第一个泛型参数为数据类型,必须为FFIData的子类;第二个参数为当前列表项的索引值。 |
keyGeneratorFunc | (T, Int64) -> String | 否 | - | 匿名函数,用于键值生成,为给定数组项生成唯一且稳定的键值。当子项在数组中的位置更改时,子项的键值不得更改,当数组中的子项被新项替换时,被替换项的键值和新项的键值必须不同。键值生成器的功能是可选的,但是,为了使开发框架能够更好地识别数组更改,提高性能,建议提供。如将数组反向时,如果没有提供键值生成器,则LazyForEach中的所有节点都将重建。 |
自定义类型说明
IDataSource
public interface IDataSource {
f