diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/by_genre/SeriesMainByGenreFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/by_genre/SeriesMainByGenreFragment.kt index 688eeb3a..8f511ddd 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/by_genre/SeriesMainByGenreFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/by_genre/SeriesMainByGenreFragment.kt @@ -16,6 +16,7 @@ import kr.co.vividnext.sodalive.common.GridSpacingItemDecoration import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.databinding.FragmentSeriesMainByGenreBinding import kr.co.vividnext.sodalive.extensions.dpToPx +import kr.co.vividnext.sodalive.home.HomeSeriesAdapter import org.koin.android.ext.android.inject import kotlin.math.roundToInt @@ -25,7 +26,7 @@ class SeriesMainByGenreFragment : BaseFragment private val viewModel: SeriesMainByGenreViewModel by inject() private lateinit var loadingDialog: LoadingDialog - private lateinit var seriesAdapter: SeriesListAdapter + private lateinit var seriesAdapter: HomeSeriesAdapter private lateinit var genreAdapter: GenreAdapter override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -89,7 +90,7 @@ class SeriesMainByGenreFragment : BaseFragment } private fun setupSeriesView() { - seriesAdapter = SeriesListAdapter( + seriesAdapter = HomeSeriesAdapter( itemWidth = ((screenWidth - 24f.dpToPx() * 2 - 16f.dpToPx()) / 2f).roundToInt(), onClickItem = { startActivity( @@ -100,9 +101,7 @@ class SeriesMainByGenreFragment : BaseFragment putExtra(Constants.EXTRA_SERIES_ID, it) } ) - }, - onClickCreator = {}, - isVisibleCreator = false + } ) val spanCount = 2 diff --git a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/day_of_week/SeriesMainDayOfWeekFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/day_of_week/SeriesMainDayOfWeekFragment.kt index 9bc206f2..81874824 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/day_of_week/SeriesMainDayOfWeekFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/audio_content/series/main/day_of_week/SeriesMainDayOfWeekFragment.kt @@ -17,6 +17,7 @@ import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.databinding.FragmentSeriesMainDayOfWeekBinding import kr.co.vividnext.sodalive.extensions.dpToPx import kr.co.vividnext.sodalive.home.DayOfWeekAdapter +import kr.co.vividnext.sodalive.home.HomeSeriesAdapter import kr.co.vividnext.sodalive.home.SeriesPublishedDaysOfWeek import org.koin.android.ext.android.inject import java.util.Calendar @@ -28,7 +29,7 @@ class SeriesMainDayOfWeekFragment : BaseFragment( private lateinit var bannerAdapter: SeriesBannerAdapter private lateinit var completedAdapter: HomeSeriesAdapter - private lateinit var recommendAdapter: SeriesListAdapter + private lateinit var recommendAdapter: HomeSeriesAdapter override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -115,6 +116,7 @@ class SeriesMainHomeFragment : BaseFragment( } } + @OptIn(UnstableApi::class) private fun setupCompletedSeriesView() { completedAdapter = HomeSeriesAdapter { if (SharedPreferenceManager.token.isNotBlank()) { @@ -175,7 +177,7 @@ class SeriesMainHomeFragment : BaseFragment( } private fun setupRecommendSeriesView() { - recommendAdapter = SeriesListAdapter( + recommendAdapter = HomeSeriesAdapter( itemWidth = ((screenWidth - 24f.dpToPx() * 2 - 16f.dpToPx()) / 2f).roundToInt(), onClickItem = { startActivity( @@ -186,9 +188,7 @@ class SeriesMainHomeFragment : BaseFragment( putExtra(Constants.EXTRA_SERIES_ID, it) } ) - }, - onClickCreator = {}, - isVisibleCreator = false + } ) val spanCount = 2 diff --git a/app/src/main/java/kr/co/vividnext/sodalive/home/HomeSeriesAdapter.kt b/app/src/main/java/kr/co/vividnext/sodalive/home/HomeSeriesAdapter.kt index 524a4f06..e60b1fcf 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/home/HomeSeriesAdapter.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/home/HomeSeriesAdapter.kt @@ -1,41 +1,40 @@ package kr.co.vividnext.sodalive.home import android.annotation.SuppressLint -import android.content.Context import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView -import com.bumptech.glide.Glide -import com.bumptech.glide.load.resource.bitmap.CenterCrop -import com.bumptech.glide.load.resource.bitmap.RoundedCorners -import com.bumptech.glide.request.RequestOptions +import coil.load +import coil.transform.RoundedCornersTransformation +import kr.co.vividnext.sodalive.R import kr.co.vividnext.sodalive.audio_content.series.GetSeriesListResponse import kr.co.vividnext.sodalive.databinding.ItemHomeSeriesBinding import kr.co.vividnext.sodalive.extensions.dpToPx class HomeSeriesAdapter( + private val itemWidth: Int? = null, private val onClickItem: (Long) -> Unit ) : RecyclerView.Adapter() { val items = mutableListOf() inner class ViewHolder( - private val context: Context, private val binding: ItemHomeSeriesBinding ) : RecyclerView.ViewHolder(binding.root) { @SuppressLint("SetTextI18n") fun bind(item: GetSeriesListResponse.SeriesListItem) { - Glide - .with(context) - .load(item.coverImage) - .apply( - RequestOptions().transform( - CenterCrop(), - RoundedCorners(16f.dpToPx().toInt()) - ) - ) - .into(binding.ivCover) + binding.ivCover.load(item.coverImage) { + placeholder(R.drawable.bg_placeholder) + transformations(RoundedCornersTransformation(16f.dpToPx())) + + if (itemWidth != null) { + val lp = binding.ivCover.layoutParams + lp.width = itemWidth + lp.height = itemWidth * 432 / 306 + binding.ivCover.layoutParams = lp + } + } binding.tvTitle.text = item.title binding.tvNickname.text = item.creator.nickname @@ -63,7 +62,6 @@ class HomeSeriesAdapter( } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ViewHolder( - parent.context, ItemHomeSeriesBinding.inflate( LayoutInflater.from(parent.context), parent,