10

I am using LazyColumn in project. When I am passing the list it giving me error. Can someone guide me what is the error?

ResultScreen.kt

@Composable
fun ResultScreen(nearestResultList: List<NearestResult>?) {
    LazyColumn(
        Modifier
            .fillMaxSize()
            .background(getBackgroundColor())
    ) {
        items(nearestResultList) { nearestResult ->
            Text(text = "$nearestResult")
        }
    }
}

Error

Type mismatch.
Required:
Int
Found:
List<NearestResult>?

enter image description here

UPDATE

enter image description here

Kotlin Learner
  • 3,995
  • 6
  • 47
  • 127

6 Answers6

17

The correct solution is to use this import:

import androidx.compose.foundation.lazy.items

The problem is that the items function that accepts a list is defined as an Extension function, so we need to import it to make it visible for use.

Sarthak Mittal
  • 5,794
  • 2
  • 24
  • 44
7

You were seeing that error because your nearestResultList is nullable and among the various signatures/overloads of the items(...) function, the signature items(size: Int, ...) was chosen as the "closest match".

The only thing that you need to do, to be able to use any of the items(...) signatures is a null check

import androidx.compose.foundation.lazy.items // or auto-fix imports

if (nearestResultList != null) {
    LazyColumn {
        items(nearestResultList) {
            Text(text = it.event, color = Color.White)
        }        
    }
}
Ma3x
  • 5,761
  • 2
  • 17
  • 22
2
@Composable
fun ResultScreen(nearestResultList: List<NearestResult>?) {
    Column(
        Modifier
            .fillMaxSize()
            .background(getBackgroundColor())
    ) {
        LazyColumn {
            nearestResultList?.size?.let {
                items(it) { index ->
                    Text(text = nearestResultList[index].event, color = Color.White)
                }
            }
        }
    }
}
Kotlin Learner
  • 3,995
  • 6
  • 47
  • 127
1

For those, who may use the Paging library, add

import androidx.paging.compose.items
0

If you're seeing this issues a LazyHorizontalGrid, make sure you're importing:

import androidx.compose.foundation.lazy.grid.items

If you're seeing this issues a LazyRow, make sure you're importing:

import androidx.compose.foundation.lazy.items

user1086279
  • 101
  • 1
  • 4
0

Updated solution

         LazyColumn {nearestResultList.isNotEmpty() -> {
                items(
                    count = nearestResultList.itemCount,
                    key = nearestResultList.itemKey(),
                    contentType = nearestResultList.itemContentType(
                    )
                ) { index ->
                    val item = nearestResultList[index]
                    if (item == null) {
                       //handle
                    } else {
                        Text(text = it.event, color = Color.White)
                    }
                }
            }}