是否有任何正确(有效)的方法在 LazyColumn 中使用 CustomView(带或不带 androidx.compose.ui.viewinterop.AndroidView)?

rob*_*ese 5 android android-jetpack androidx android-jetpack-compose

问题是什么?

现在我正在尝试在 内部使用我的自定义 Android 视图LazyColumn。在我看来,由于每次滚动时都会重新创建自定义视图,因此图片非常滞后。那么,除了使用 Compose 实现视图之外,还有什么方法可以让它更流畅呢?

我的代码:

LazyColumn {
    items(events){ event ->
        EventItem(event, callBack)
    }
}

@Composable
private fun EventItem(
    event: EventOverviewUiModel,
    callBack : (EventsAdapterEvent) -> Unit
) {
    AndroidView(
        modifier = Modifier.fillMaxWidth(),
        factory = { context -> EventOverviewView(context) },
        update = { view -> view.bind(event) }
    )
}
Run Code Online (Sandbox Code Playgroud)

小智 1

对于遇到同样问题的其他人:

截至今天,这个问题还没有解决方案。Google 已知此问题,您可以在此处跟踪问题的解决方案跟踪问题的解决情况。

如果您需要AndroidView在 Compose 世界中平滑滚动,您有两种解决方法:

  • 您的物品数量有限:您可以使用简单的ColumnaverticalScroll并添加您的AndroidView内部 ;
  • 您有太多项目:您必须实现 aRecyclerView并将其用作 aAndroidView而不是AndroidViewa 中的an LazyColumn。