Convert footer holder to compose
This commit is contained in:
1 parent
029d6bf7f6
commit
9e77f104f6
3 files changed
+39
-36
No files matched your search
@@ -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<FooterAdapter.ViewHolder>() {
|
||||
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("")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
style="@style/Widget.Material3.CardView.Outlined"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:strokeColor="@android:color/transparent">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingBottom="@dimen/text_little_small"
|
||||
android:gravity="center" />
|
||||
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
Reference in new issue
Block a user