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 index fd33a1731..48189b346 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/FooterAdapter.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/FooterAdapter.kt @@ -1,29 +1,29 @@ package com.hippo.ehviewer.ui.scene -import android.view.LayoutInflater import android.view.ViewGroup +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.material3.Card +import androidx.compose.material3.Text +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.ComposeView import androidx.recyclerview.widget.RecyclerView -import com.hippo.ehviewer.databinding.ItemGalleryPreviewFooterBinding +import com.google.accompanist.themeadapter.material3.Mdc3Theme class FooterAdapter(private val onClick: () -> Unit) : RecyclerView.Adapter() { - var text: String? = null - set(value) { - field = value - notifyItemChanged(0) - } + var text by mutableStateOf("") - inner class ViewHolder(val binding: ItemGalleryPreviewFooterBinding) : - RecyclerView.ViewHolder(binding.root) { - init { - itemView.setOnClickListener { onClick() } - } - } + inner class ViewHolder(val composeView: ComposeView) : RecyclerView.ViewHolder(composeView) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - val inflater = LayoutInflater.from(parent.context) - val binding = ItemGalleryPreviewFooterBinding.inflate(inflater, parent, false) - return ViewHolder(binding) + return ViewHolder(ComposeView(parent.context)) } override fun getItemCount(): Int { @@ -31,6 +31,23 @@ class FooterAdapter(private val onClick: () -> Unit) : } override fun onBindViewHolder(holder: ViewHolder, position: Int) { - holder.binding.text.text = text + holder.composeView.setContent { + Mdc3Theme { + Column { + Box( + contentAlignment = Alignment.Center + ) { + Card( + onClick = onClick, + modifier = Modifier + .fillMaxWidth() + .aspectRatio(0.6666667F) + ) {} + 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 071dfc615..869961a7e 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 @@ -156,6 +156,7 @@ class GalleryDetailScene : CollapsingToolbarScene(), View.OnClickListener, Downl private var mCurrentFunds: HomeParser.Funds? = null private var previewsAdapter: GalleryPreviewsAdapter? = null private var footerAdapter: FooterAdapter? = null + private var headerAdapter: FooterAdapter? = null @State private var mState = STATE_INIT @@ -412,7 +413,8 @@ class GalleryDetailScene : CollapsingToolbarScene(), View.OnClickListener, Downl mainActivity!!.startReaderActivity(mGalleryDetail!!, it.position) } footerAdapter = FooterAdapter { navigateToPreview(true) } - adapter = ConcatAdapter(previewsAdapter, footerAdapter) + headerAdapter = FooterAdapter { navigateToPreview() } + adapter = ConcatAdapter(headerAdapter, previewsAdapter, footerAdapter) val columnWidth = Settings.thumbSize layoutManager = AutoGridLayoutManager(context, columnWidth).apply { setStrategy(SimpleGridAutoSpanLayout.STRATEGY_SUITABLE_SIZE) @@ -452,6 +454,7 @@ class GalleryDetailScene : CollapsingToolbarScene(), View.OnClickListener, Downl mViewTransition2 = null previewsAdapter = null footerAdapter = null + headerAdapter = null _binding = null } @@ -728,6 +731,7 @@ class GalleryDetailScene : CollapsingToolbarScene(), View.OnClickListener, Downl private fun bindPreviews(gd: GalleryDetail) { _binding ?: return val previewList = gd.previewList + headerAdapter?.text = getString(R.string.more_previews) if (gd.previewPages <= 0 || previewList.isEmpty()) { footerAdapter?.text = getString(R.string.no_previews) return diff --git a/app/src/main/res/layout/item_gallery_preview_footer.xml b/app/src/main/res/layout/item_gallery_preview_footer.xml deleted file mode 100644 index 3266b8eeb..000000000 --- a/app/src/main/res/layout/item_gallery_preview_footer.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - \ No newline at end of file