我有了下一个代码,一切都很好,除了我需要把我的第二个AnswerOption放在一个lazyverticalGrid中. 我不能这样做,因为它在一个惰性列中,这是代码

@Composable
fun AssessmentScreen(
    onClose: (String, String) -> Unit,
    relatedSubSkillIdsJson: String,
    uiState: AssessmentUiState,
    onSelectedOption: (String) -> Unit,
    onShowAnswerFeedback: (Boolean) -> Unit,
    onNextQuestion: () -> Unit,
    onCloseAssessment: () -> Unit,
    navigateToAndPop: (Pair<String, String>) -> Unit,
    goBack: () -> Unit,
    assessmentType: String,
) {
    val context = LocalContext.current
    val activity = context.findActivity()
    val navigationBarHeightDp = activity?.getNavigationBarHeightInDp() ?: 0.dp
    val blur =
        if (uiState.isLoading) dimensionResource(dimen.default_screen_blur) else 0.dp
    val currentArtiIndex = remember { mutableStateOf(0) }

    if (uiState.questions.isNotEmpty()) {
        LazyColumn(
            Modifier
                .fillMaxSize()
                .padding(
                    top = dimensionResource(dimen.default_screen_padding),
                    start = dimensionResource(dimen.default_screen_padding),
                    end = dimensionResource(dimen.default_screen_padding)
                )
                .blur(blur)
        ) {
            item {
                CloseAssessment(
                    relatedSubSkillIdsJson = relatedSubSkillIdsJson,
                    uiState = uiState,
                    questionIndex = uiState.currentQuestionIndex,
                    isAnsweredQuestion = uiState.showAnswerFeedback,
                    onCloseAssessment = { onCloseAssessment() },
                    navigateToAndPop = navigateToAndPop,
                    goBack = goBack
                )
                AssessmentTitle(artiImages[currentArtiIndex.value], assessmentType)
                QuestionDotsIndicator(uiState.questionAnswersStatus)
                AssessmentQuestion(
                    thumbnail = uiState.getCurrentQuestionItem().thumbnail,
                    question = uiState.getCurrentQuestionItem().question
                )
                Spacer(modifier = Modifier.height(20.dp))
            }

            val optionsAbcLetterDescription = ('a'..'z').toList()
                itemsIndexed(uiState.currentAnswerOptions) { index, option ->
                    if (uiState.currentAnswerOptions[index].thumbnail == ""){
                        AnswerOption(
                            selectedOptionId = uiState.selectedAnswerId,
                            showFeedback = uiState.showAnswerFeedback,
                            optionLetter = circularCharIteration(optionsAbcLetterDescription, index),
                            option = option,
                            onSelectedOption = { onSelectedOption(it) }
                        )
                    }else{
                        AnswerOption(
                            selectedOptionId = uiState.selectedAnswerId,
                            showFeedback = uiState.showAnswerFeedback,
                            optionLetter = circularCharIteration(optionsAbcLetterDescription, index),
                            option = option,
                            onSelectedOption = { onSelectedOption(it) }
                        )
                    }
                }
            item {
                ChallengeBtn(
                    modifier = Modifier
                        .padding(bottom = navigationBarHeightDp + dimensionResource(dimen.default_screen_padding)),
                    uiState = uiState,
                    navigateToAndPop = navigateToAndPop,
                    onShowAnswerFeedback = { onShowAnswerFeedback(it) },
                    onCloseAssessment = { onCloseAssessment() },
                    onNextQuestion = {
                        if (!uiState.isLastQuestion) {
                            currentArtiIndex.value =
                                nextArtiImage(currentArtiIndex.value)
                            onNextQuestion()
                        }
                    } ,
                    relatedSubSkillIdsJson = relatedSubSkillIdsJson,
                )
            }
        }
    }
    ProgressBarComponentComposable(isLoading = uiState.isLoading)

你知道怎么做吗?

推荐答案

把它包在item{…}个街区内

...    

val optionsAbcLetterDescription = ('a'..'z').toList()
itemsIndexed(uiState.currentAnswerOptions) { index, option ->
if (uiState.currentAnswerOptions[index].thumbnail == "") {
       
     this@LazyColumn.item {  // item block
         AnswerOption(
            ...
         )
     }
               
} else {
      
     this@LazyColumn.item { // item block
         AnswerOption(
             ...
         ) 
     }
}
  
...

或者,您可以将AnswerOption作为LazyItemScope的扩展,

@Composable
fun LazyItemScope.AnswerOption() {...}

你可以简单地这样称呼它

...    

val optionsAbcLetterDescription = ('a'..'z').toList()
itemsIndexed(uiState.currentAnswerOptions) { index, option ->
if (uiState.currentAnswerOptions[index].thumbnail == "") {
       
     
      AnswerOption(
         ...
      )
    
               
} else {
      
   
      AnswerOption(
          ...
      ) 
     
}
  
...

Android相关问答推荐

view喷气背包中找不到模型组成

写入排除例外以进行依赖性判断

Android Jetpack Compose调用view-model函数仅一次

没有打开历史记录的活动意向 Select 器完成调用活动

Dispatchers中的Kotlin协同程序.Main没有';t块主螺纹

Clean MVVM 架构中的 API 响应处理

使用 async 向网络发出并行请求并在supervisorScope中处理它们

减少Compose中可滚动选项卡之间的间距

修复报错 RecyclerView: No adapter attached;跳过布局

Android 应用程序从 Android Studio 安装,但不是作为 .apk 在外部安装.抛出java.lang.UnsatisfiedLinkError

在 Android 房间迁移中获取上下文

Android工作室未成立

为什么项目捕获对象给我在 Compose 中找不到参考

每次在 Jetpack Compose 中调用导航

每次在 Jetpack Compose 中调用导航

状态值更改时屏幕未重新组合 - Jetpack Compose

是什么让 Android Studio 中的按钮变成紫色?加上新手的其他奇怪行为

构成material 3 中的分隔符

Jetpack 使用 Canvas 组成半圆

Google API:java.lang.ClassNotFoundException:找不到类sun.misc.Service