From 6a88aaf78257a6f0ede88910fd79b4ec3325110e Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Fri, 10 Mar 2023 19:48:01 +0800 Subject: [PATCH] Use ConcatAdapter for previews in GalleryDetailScene --- .../hippo/ehviewer/ui/scene/FooterAdapter.kt | 36 +++++++++++++++++++ .../ehviewer/ui/scene/GalleryDetailScene.kt | 13 ++++--- .../res/layout/gallery_detail_previews.xml | 7 ---- .../layout/item_gallery_preview_footer.xml | 8 +++++ 4 files changed, 52 insertions(+), 12 deletions(-) create mode 100644 app/src/main/java/com/hippo/ehviewer/ui/scene/FooterAdapter.kt create mode 100644 app/src/main/res/layout/item_gallery_preview_footer.xml diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/FooterAdapter.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/FooterAdapter.kt new file mode 100644 index 000000000..fd33a1731 --- /dev/null +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/FooterAdapter.kt @@ -0,0 +1,36 @@ +package com.hippo.ehviewer.ui.scene + +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.hippo.ehviewer.databinding.ItemGalleryPreviewFooterBinding + +class FooterAdapter(private val onClick: () -> Unit) : + RecyclerView.Adapter() { + var text: String? = null + set(value) { + field = value + notifyItemChanged(0) + } + + inner class ViewHolder(val binding: ItemGalleryPreviewFooterBinding) : + RecyclerView.ViewHolder(binding.root) { + init { + itemView.setOnClickListener { onClick() } + } + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + val inflater = LayoutInflater.from(parent.context) + val binding = ItemGalleryPreviewFooterBinding.inflate(inflater, parent, false) + return ViewHolder(binding) + } + + override fun getItemCount(): Int { + return 1 + } + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + holder.binding.text.text = text + } +} \ No newline at end of file diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.kt index 0dbb9dad4..e81f310e0 100755 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.kt @@ -46,6 +46,7 @@ import androidx.annotation.StringRes import androidx.core.content.ContextCompat import androidx.core.graphics.ColorUtils import androidx.lifecycle.lifecycleScope +import androidx.recyclerview.widget.ConcatAdapter import coil.Coil.imageLoader import coil.annotation.ExperimentalCoilApi import com.google.android.material.progressindicator.CircularProgressIndicator @@ -154,6 +155,7 @@ class GalleryDetailScene : CollapsingToolbarScene(), View.OnClickListener, Downl private var mArchiveList: List? = null private var mCurrentFunds: HomeParser.Funds? = null private var previewsAdapter: GalleryPreviewsAdapter? = null + private var footerAdapter: FooterAdapter? = null @State private var mState = STATE_INIT @@ -406,12 +408,12 @@ class GalleryDetailScene : CollapsingToolbarScene(), View.OnClickListener, Downl binding.content.comments.comments.visibility = View.GONE } binding.content.previews.previews.setOnClickListener { navigateToPreview() } - binding.content.previews.previewText.setOnClickListener { navigateToPreview(true) } binding.content.previews.recyclerView.run { previewsAdapter = GalleryPreviewsAdapter { mainActivity!!.startReaderActivity(mGalleryDetail!!, it.position) } - adapter = previewsAdapter + footerAdapter = FooterAdapter { navigateToPreview(true) } + adapter = ConcatAdapter(previewsAdapter, footerAdapter) val columnWidth = Settings.thumbSize layoutManager = AutoGridLayoutManager(context, columnWidth).apply { setStrategy(SimpleGridAutoSpanLayout.STRATEGY_SUITABLE_SIZE) @@ -450,6 +452,7 @@ class GalleryDetailScene : CollapsingToolbarScene(), View.OnClickListener, Downl mViewTransition = null mViewTransition2 = null previewsAdapter = null + footerAdapter = null _binding = null } @@ -728,12 +731,12 @@ class GalleryDetailScene : CollapsingToolbarScene(), View.OnClickListener, Downl binding.content.previews.run { val previewList = gd.previewList if (gd.previewPages <= 0 || previewList.isEmpty()) { - previewText.setText(R.string.no_previews) + footerAdapter?.text = getString(R.string.no_previews) return } else if (gd.previewPages == 1) { - previewText.setText(R.string.no_more_previews) + footerAdapter?.text = getString(R.string.no_more_previews) } else { - previewText.setText(R.string.more_previews) + footerAdapter?.text = getString(R.string.more_previews) } previewsAdapter?.submitList(previewList) } diff --git a/app/src/main/res/layout/gallery_detail_previews.xml b/app/src/main/res/layout/gallery_detail_previews.xml index 03d36d35d..df16b9327 100644 --- a/app/src/main/res/layout/gallery_detail_previews.xml +++ b/app/src/main/res/layout/gallery_detail_previews.xml @@ -33,11 +33,4 @@ android:layout_width="match_parent" android:layout_height="wrap_content" /> -