package ohos_app_cangjie_entry.page
import ohos.base.*
import ohos.component.*
import ohos.state_manage.*
import ohos.state_macro_manage.*
import std.collection.ArrayList
import 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
@Component
public 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)
}
}
}
评论