首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在撰写中创建无限旋转木马时的NullPointerException

在撰写中创建无限旋转木马时的NullPointerException
EN

Stack Overflow用户
提问于 2022-07-11 08:28:42
回答 1查看 96关注 0票数 0

我正在尝试使用修改后的this solution版本创建无限可滚动的卡片旋转体。

代码语言:javascript
复制
@Composable
fun CircularList(
    items: List<String>,
    modifier: Modifier = Modifier,
    onItemClick: (String) -> Unit
) {
    val listState = rememberLazyListState(Int.MAX_VALUE / 2)

    LazyColumn(
        state = listState,
        modifier = modifier
    ) {
        items(
            count = Int.MAX_VALUE,
            itemContent = {
                val index = it % items.size  // line X
                Text(text = items[index]) 
            }
        )
    }
}

然而,这与NPE崩溃:

代码语言:javascript
复制
    java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, parameter it
    at androidx.compose.foundation.lazy.LazyListItemProviderImplKt$generateKeyToIndexMap$1$1.invoke(Unknown Source:2)

这也会崩溃,如果我使用一个较小的500指数例如,但它不会崩溃,如果我使用50

代码语言:javascript
复制
val listState = rememberLazyListState(500) // Crashes
val listState = rememberLazyListState(50)  // Doesn't crash

是什么导致了这一切?

EDIT1:我试过用断点来调试它,在它停止之前它就崩溃了。项目列表不是空的,通常测试大小是2-6个对象。

EDIT2:还尝试使用scrollToItem()来设置初始索引,但返回了相同的异常

EN

回答 1

Stack Overflow用户

发布于 2022-07-15 09:00:09

我从来不明白为什么会出现这个问题,但是这里有一个解决方案(或解决办法/黑客)如何解决它:

代码语言:javascript
复制
@Composable
fun CircularList(
    items: List<String>,
    modifier: Modifier = Modifier,
    onItemClick: (String) -> Unit
) {
    val listState = rememberLazyListState(Int.MAX_VALUE / 4) // Use smaller index for smaller count

    LazyColumn(
        state = listState,
        modifier = modifier
    ) {
        items(
            count = Int.MAX_VALUE / 2, // Use smaller count, somewhere around 1B
            itemContent = {
                val index = it % items.size  
                Text(text = items[index]) 
            }
        )
    }
}

出于某种原因,这是没有问题的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72935666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档