feat(original): 오리지널 탭에 Yandex 배너 헤더를 추가한다

This commit is contained in:
2026-04-27 15:22:42 +09:00
parent 8295e3d25e
commit 4ef880c350
2 changed files with 27 additions and 4 deletions

View File

@@ -11,6 +11,8 @@ import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.google.gson.Gson
import androidx.recyclerview.widget.ConcatAdapter
import kr.co.vividnext.sodalive.BuildConfig
import kr.co.vividnext.sodalive.R
import kr.co.vividnext.sodalive.base.BaseFragment
import kr.co.vividnext.sodalive.base.SodaDialog
@@ -18,6 +20,7 @@ import kr.co.vividnext.sodalive.chat.original.detail.OriginalWorkDetailActivity
import kr.co.vividnext.sodalive.common.GridSpacingItemDecoration
import kr.co.vividnext.sodalive.common.LoadingDialog
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
import kr.co.vividnext.sodalive.common.YandexInlineBannerHeaderAdapter
import kr.co.vividnext.sodalive.databinding.FragmentOriginalTabBinding
import kr.co.vividnext.sodalive.extensions.dpToPx
import kr.co.vividnext.sodalive.main.MainActivity
@@ -36,6 +39,7 @@ class OriginalTabFragment :
private val myPageViewModel: MyPageViewModel by inject()
private lateinit var adapter: OriginalWorkListAdapter
private lateinit var bannerAdapter: YandexInlineBannerHeaderAdapter
private lateinit var loadingDialog: LoadingDialog
@@ -49,9 +53,19 @@ class OriginalTabFragment :
viewModel.loadMore()
}
override fun onDestroyView() {
bannerAdapter.destroy()
super.onDestroyView()
}
private fun setupRecycler() {
val spanCount = 3
val spacingPx = 16f.dpToPx().toInt()
val headerCount = 1
bannerAdapter = YandexInlineBannerHeaderAdapter(
adUnitId = BuildConfig.YANDEX_INLINE_BANNER_ORIGINAL_TAB_AD_UNIT_ID,
screenWidth = screenWidth
)
adapter = OriginalWorkListAdapter { id ->
ensureLoginAndAuth {
startActivity(
@@ -64,12 +78,20 @@ class OriginalTabFragment :
)
}
}
binding.rvOriginal.layoutManager = GridLayoutManager(requireContext(), spanCount)
binding.rvOriginal.setPadding(0, 0, 0, 8f.dpToPx().toInt())
binding.rvOriginal.layoutManager = GridLayoutManager(requireContext(), spanCount).apply {
spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() {
override fun getSpanSize(position: Int): Int {
return if (position < headerCount) spanCount else 1
}
}
}
binding.rvOriginal.addItemDecoration(
GridSpacingItemDecoration(
spanCount,
spacingPx,
true
true,
headerCount
)
)
binding.rvOriginal.addOnScrollListener(object : RecyclerView.OnScrollListener() {
@@ -83,7 +105,7 @@ class OriginalTabFragment :
}
}
})
binding.rvOriginal.adapter = adapter
binding.rvOriginal.adapter = ConcatAdapter(bannerAdapter, adapter)
}
private fun bind() {

View File

@@ -9,10 +9,11 @@
android:id="@+id/rv_original"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintTop_toTopOf="parent"
android:clipToPadding="false"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:listitem="@layout/item_original_work" />
</androidx.constraintlayout.widget.ConstraintLayout>