簡體   English   中英

LazyColumn 不重新組合某些項目

[英]LazyColumn to not recompose some items

使用RecyclerView ,我可以使某些ViewHolder不可回收(按照我希望我的 RecyclerView 不回收某些項目中的一些答案)。
我可以讓LazyColumn不重新組合某些項目(類似於讓RecyclerView不回收某些ViewHolder )嗎? 我在LazyColumn中有一些帶有一些大圖像的項目,它在向下和向上滾動后重新組合,因此滾動不流暢。

我遇到了同樣的問題,並使用 Column 來代替修飾符垂直滾動。 如果您不希望它回收視圖,只需加載所有(少數項目)

Column(
            modifier = Modifier
                .constrainAs(listView) {
                    top.linkTo(
                        parent.top
                    )
                }
                .fillMaxSize()
                .verticalScroll(rememberScrollState())
        ) {
            list.forEachIndexed { index, itemModel ->
               ItemView(itemModel, index) {
                    // on item click
                }
            }
            Spacer(modifier = Modifier.height(40.dp))
        }

我有一個類似的問題,一個可組合的大量操作位圖,然后在 canvas 上繪制它們。 您注意到上下滾動lazyColumn 時的處理。

為了解決這個問題,將我操作的位圖存儲在List<ImageBitmap>作為rememberSaveable

val rememberFruits by rememberSaveable(images) {         
    mutableStateOf(doBitmapOperations(images))
}

Canvas(
    modifier = Modifier
        .fillMaxWidth()
        .height(height)
        .constrainAs(circle) {}
) {
    rememberFruits
        .forEach { createScaledImageBitmap ->
            val (image, offset) = createScaledImageBitmap
            drawImage(
                image = image,
                topLeft = offset
            )
        }
}

我在lazyColumn 中的項目仍然重新組合,但是在滾動時不再執行繁重的 bitmap 操作,並使上下滾動平滑。

希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM