diff --git a/app/src/main/java/kr/co/vividnext/sodalive/chat/original/OriginalTabFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/chat/original/OriginalTabFragment.kt index d2a2571a..8110774c 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/chat/original/OriginalTabFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/chat/original/OriginalTabFragment.kt @@ -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() { diff --git a/app/src/main/res/layout/fragment_original_tab.xml b/app/src/main/res/layout/fragment_original_tab.xml index 1c7732b6..79de17f3 100644 --- a/app/src/main/res/layout/fragment_original_tab.xml +++ b/app/src/main/res/layout/fragment_original_tab.xml @@ -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" />