feat(original): 오리지널 탭에 Yandex 배너 헤더를 추가한다
This commit is contained in:
@@ -11,6 +11,8 @@ import androidx.recyclerview.widget.GridLayoutManager
|
|||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.google.gson.Gson
|
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.R
|
||||||
import kr.co.vividnext.sodalive.base.BaseFragment
|
import kr.co.vividnext.sodalive.base.BaseFragment
|
||||||
import kr.co.vividnext.sodalive.base.SodaDialog
|
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.GridSpacingItemDecoration
|
||||||
import kr.co.vividnext.sodalive.common.LoadingDialog
|
import kr.co.vividnext.sodalive.common.LoadingDialog
|
||||||
import kr.co.vividnext.sodalive.common.SharedPreferenceManager
|
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.databinding.FragmentOriginalTabBinding
|
||||||
import kr.co.vividnext.sodalive.extensions.dpToPx
|
import kr.co.vividnext.sodalive.extensions.dpToPx
|
||||||
import kr.co.vividnext.sodalive.main.MainActivity
|
import kr.co.vividnext.sodalive.main.MainActivity
|
||||||
@@ -36,6 +39,7 @@ class OriginalTabFragment :
|
|||||||
private val myPageViewModel: MyPageViewModel by inject()
|
private val myPageViewModel: MyPageViewModel by inject()
|
||||||
|
|
||||||
private lateinit var adapter: OriginalWorkListAdapter
|
private lateinit var adapter: OriginalWorkListAdapter
|
||||||
|
private lateinit var bannerAdapter: YandexInlineBannerHeaderAdapter
|
||||||
|
|
||||||
private lateinit var loadingDialog: LoadingDialog
|
private lateinit var loadingDialog: LoadingDialog
|
||||||
|
|
||||||
@@ -49,9 +53,19 @@ class OriginalTabFragment :
|
|||||||
viewModel.loadMore()
|
viewModel.loadMore()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onDestroyView() {
|
||||||
|
bannerAdapter.destroy()
|
||||||
|
super.onDestroyView()
|
||||||
|
}
|
||||||
|
|
||||||
private fun setupRecycler() {
|
private fun setupRecycler() {
|
||||||
val spanCount = 3
|
val spanCount = 3
|
||||||
val spacingPx = 16f.dpToPx().toInt()
|
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 ->
|
adapter = OriginalWorkListAdapter { id ->
|
||||||
ensureLoginAndAuth {
|
ensureLoginAndAuth {
|
||||||
startActivity(
|
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(
|
binding.rvOriginal.addItemDecoration(
|
||||||
GridSpacingItemDecoration(
|
GridSpacingItemDecoration(
|
||||||
spanCount,
|
spanCount,
|
||||||
spacingPx,
|
spacingPx,
|
||||||
true
|
true,
|
||||||
|
headerCount
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
binding.rvOriginal.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
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() {
|
private fun bind() {
|
||||||
|
|||||||
@@ -9,10 +9,11 @@
|
|||||||
android:id="@+id/rv_original"
|
android:id="@+id/rv_original"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
android:clipToPadding="false"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tools:listitem="@layout/item_original_work" />
|
tools:listitem="@layout/item_original_work" />
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|||||||
Reference in New Issue
Block a user