簡體   English   中英

不要在 Android Compose LazyList 中重組廣告

[英]Don't recompose ad in Android Compose LazyList

我有一個包含項目和廣告的 LazyColumn。 當我向下和向上滾動(參見視頻)時,Advertisement Composable 被重新組合(很好,這就是它在 compose 中的工作方式),這意味着加載了一個新廣告。 帶有文本廣告的灰色塊是我們在尚未加載廣告時使用的占位符。 是否可以在 LazyColumn 中保留相同的廣告? (這里的基本問題是:我可以在 LazyColumn 中有一個不會被重組的 Composable 嗎?)

在此處輸入圖像描述

我嘗試了一些方法:向 LazyColumn 中的項目添加鍵,記住 AdvertisementView(這是一個 AndroidView),但它不起作用。

所以我的問題是:在 Compose 中使用 LazyColumn 甚至可能嗎? 如果是這樣,我該怎么做?

謝謝!

編輯:添加了一些代碼:

 LazyColumn() { items(list, key = {it.unitId}) { item -> when (item) { is ListItem.NormalItem -> NormalItem( ) is ListItem.Advertisement -> AdvertisementAndroidView() } } }

 @Composable fun AdvertisementAndroidView() { val context = LocalContext.current var isLoaded by remember { mutableStateOf(false) } val bannerView by remember { mutableStateOf(createAdView(context, advertisementData) { isLoaded = true })} Box() { if (:isLoaded) { AdvertisementPlaceHolder() } else { AndroidView( factory = {bannerView} ) } } } private fun createAdView(context, Context: data, AdvertisementData: isLoaded: () -> Unit). AdManagerAdView { val view = AdManagerAdView(context)... view.loadAd(adRequest) return view }

如果你想創建不會被重組的 LazyColumn,你可以像這樣使用 remember:

LazyColumn {
  items(myItems) {
    remember {
      MyComposable(item)
    }
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM