From 20f850685595c96616f76a80016d2ea447450f32 Mon Sep 17 00:00:00 2001 From: yan-shuifeng Date: Mon, 30 Dec 2024 15:24:21 +0800 Subject: [PATCH] enable LazyForEach Signed-off-by: yan-shuifeng --- arkoala-arkts/arkui/src/LazyForEach.ts | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/arkoala-arkts/arkui/src/LazyForEach.ts b/arkoala-arkts/arkui/src/LazyForEach.ts index 01ffee274..fdd7efa63 100644 --- a/arkoala-arkts/arkui/src/LazyForEach.ts +++ b/arkoala-arkts/arkui/src/LazyForEach.ts @@ -49,7 +49,7 @@ export type DataChangeListener = Object } class LazyForEachManager { - static isDummy: boolean = true + static isDummy: boolean = false // Special pointer to mark that more elements needed. static specialPointer: pointer = 1 static OnRangeUpdate(parent: pointer, totalCount: int32, updater: (currentIndex: int32, currentMark: pointer) => void) { @@ -81,7 +81,7 @@ export function LazyForEach(dataSource: IDataSource, itemGenerator: (item: T, index: number) => void, keyGenerator?: (item: T, index: number) => string, ) { - let current = rememberMutableState(0) + let current = rememberMutableState(-1) let mark = rememberMutableState(nullptr) let version = rememberMutableState(0) console.log(`LazyForEach current=${current.value} version=${version.value} mark=${mark.value}`) @@ -102,18 +102,31 @@ export function LazyForEach(dataSource: IDataSource, let markUp = mark.value let markDown = mark.value - const needFillUp = remember(() => () => { + // const needFillUp = remember(() => () => { + // let more = LazyForEachManager.NeedMoreElements(parentPtr, markUp, 0) + // if (more == nullptr) return false + // markUp = more + // return true + // }) + // const needFillDown = remember(() => () => { + // let more = LazyForEachManager.NeedMoreElements(parentPtr, markDown, 1) + // if (more == nullptr) return false + // markDown = more + // return true + // }) + + const needFillUp = () => { let more = LazyForEachManager.NeedMoreElements(parentPtr, markUp, 0) if (more == nullptr) return false markUp = more return true - }) - const needFillDown = remember(() => () => { + } + const needFillDown = () => { let more = LazyForEachManager.NeedMoreElements(parentPtr, markDown, 1) if (more == nullptr) return false markDown = more return true - }) + } let indexUp = current.value let indexDown = current.value -- Gitee