Use ConcatAdapter for previews in GalleryDetailScene
This commit is contained in:
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)
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user