package ohos_app_cangjie_entry.pageimport ohos.base.*import ohos.component.*import ohos.state_manage.*import ohos.state_macro_manage.*import std.collection.ArrayListimport std.collection.*class CoverDataSource <: IDataSource<String> { public CoverDataSource(let data_: ArrayList<String>) {} public var listenerOp: Option<DataChangeListener> = None public func totalCount(): Int64 { return data_.size } public func getData(index: Int64): String { return data_[index] } public func onRegisterDataChangeListener(listener: DataChangeListener): Unit { listenerOp = listener } public func onUnregisterDataChangeListener(listener: DataChangeListener): Unit { listenerOp = None } public func notifyChange(): Unit { let listener: DataChangeListener = listenerOp.getOrThrow() listener.onDataReloaded() }}func getDS(): CoverDataSource{ let data: ArrayList<String> = ArrayList<String>([ 'http://example.com/youlanApi/cover/lazy1.jpg', 'http://example.com/youlanApi/cover/lazy2.jpg', 'http://example.com/youlanApi/cover/lazy3.jpg', 'http://example.com/youlanApi/cover/lazy4.jpg', 'http://example.com/youlanApi/cover/lazy5.jpg', 'http://example.com/youlanApi/cover/lazy6.jpg', 'http://example.com/youlanApi/cover/lazy7.jpg', 'http://example.com/youlanApi/cover/lazy8.jpg', 'http://example.com/youlanApi/cover/lazy9.jpg', 'http://example.com/youlanApi/cover/lazy10.jpg', 'http://example.com/youlanApi/cover/lazy11.jpg' ]) let dataSourceStu: CoverDataSource = CoverDataSource(data) return dataSourceStu}let coverDataSource: CoverDataSource = getDS()@Entry@Componentpublic class lazypage { func build(){ Column(30) { Grid { LazyForEach(coverDataSource, itemGeneratorFunc: {cover: String, idx: Int64 => GridItem { Image(cover) .width(100.percent) .height(300) } }) } .height(100.percent) .width(100.percent) .columnsTemplate('1fr 1fr') .columnsGap(5) .rowsGap(5) .backgroundColor(0xFFFFFF) .padding(right: 5, left: 5) } }}
评论