[Compose Study] LazyColumn

728x90
반응형

* LazyColumn은 기존의 RecyclerView, ListView와 비슷한 것 같다.

* lazyColumn은 세로 스크롤이고, 가로스크롤이 가능한 lazyRow, lazyGrid도 있다.

공식문서에 사용법은 3가지로 나와있다.

import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.material.Text

val itemsList = (0..5).toList()
val itemsIndexedList = listOf("A", "B", "C")

LazyColumn {
    items(itemsList) {
        Text("Item is $it")
    }

    item {
        Text("Single item")
    }

    itemsIndexed(itemsIndexedList) { index, item ->
        Text("Item at index $index is $item")
    }
}

 

* 여기서 itemsIndexed 방법을 가장 많이 사용한다고 한다. 

inline fun <T : Any?> LazyListScope.itemsIndexed(
    items: Array<T>,
    noinline key: ((index: Int, item) -> Any)? = null,
    crossinline contentType: (index: Int, item) -> Any = { _, _ -> null },
    crossinline itemContent: @Composable LazyItemScope.(index: Int, item) -> Unit
): Unit

* 여기서 key 값을 넣는 이유는 그 index의 key 값을 알면 변화가 되었을때 그 데이터 값만 리컴포즈가 되어 효율적으로 처리할 수

   있기 때문이다.

* key 값은 주로 data.class 에 있는 id 값을 가져와서 사용한다

 

* 예시

* 데이터 클래스 생성

* Repository에 더미 데이터 생성

 

* 재활용할 Item인 CustomItem 생성

 

* MainActivity

* itemsIndexed에 item과 key로 person.id를 넘겨주었다. index, person 대신 _, person으로 해줘도 된다.

 

* 실행 결과

 

 

-------

참고 자료

https://kotlinworld.com/210

 

[Android Compose Lists] 2. Compose LazyColumn을 이용해 RecyclerView 만들기 + item, items, itemsIndexed사용법 정리

LazyColumn이란? LazyColumn은 화면에 보여지는 컴포저블만을 표시하는 scrollable한 Column이다. LazyColumn은 화면에 보여지는 컴포저블만을 표시하기 때문에 화면 로딩 시간을 최적화 시킬 수 있어 많은 아

kotlinworld.com

https://foso.github.io/Jetpack-Compose-Playground/foundation/lazycolumn/

 

LazyColumn - Jetpack Compose Playground

🤔 Documentation issue? Report or edit LazyColumn A LazyColumn is a vertically scrolling list that only composes and lays out the currently visible items. It’s similar to a Recyclerview in the classic Android View system. @Composable fun LazyColumnDemo

foso.github.io

https://developer.android.com/reference/kotlin/androidx/compose/foundation/lazy/package-summary#lazycolumn

 

androidx.compose.foundation.lazy  |  Android Developers

androidx.compose.desktop.ui.tooling.preview

developer.android.com

 

728x90
반응형

'Study > Android' 카테고리의 다른 글

[Compose Study] Compose 기본사항 - 2  (1) 2024.09.05
[Compose Study] Compose 기본사항 - 1  (2) 2024.09.04
[Compose Study] State 다루기  (0) 2024.06.04
[Compose Study] ViewModel  (0) 2024.06.03
[Compose Study] Navigation  (0) 2024.06.02
TAGS.

Comments