Use ConcatAdapter for previews in GalleryDetailScene

This commit is contained in:
FooIbar authored and tarsin committed 2023-03-10 20:08:52 +08:00
1 parent 9d9c09743c
commit 6a88aaf782
4 files changed
+52 -12

No files matched your search

@@ -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<FooterAdapter.ViewHolder>() {
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
}
}
@@ -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<ArchiveParser.Archive>? = 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)
}