mirror of
https://github.com/rebelonion/Dantotsu.git
synced 2026-01-20 11:33:57 +00:00
feat: charFav WIP
This commit is contained in:
@@ -18,9 +18,15 @@ import java.io.Serializable
|
||||
class CharacterAdapter(
|
||||
private val characterList: ArrayList<Character>
|
||||
) : RecyclerView.Adapter<CharacterAdapter.CharacterViewHolder>() {
|
||||
|
||||
interface CharacterClickListener {
|
||||
fun onFavoriteClicked(character: Character)
|
||||
}
|
||||
|
||||
var listener: CharacterClickListener? = null
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CharacterViewHolder {
|
||||
val binding =
|
||||
ItemCharacterBinding.inflate(LayoutInflater.from(parent.context), parent, false)
|
||||
val binding = ItemCharacterBinding.inflate(LayoutInflater.from(parent.context), parent, false)
|
||||
return CharacterViewHolder(binding)
|
||||
}
|
||||
|
||||
@@ -32,29 +38,21 @@ class CharacterAdapter(
|
||||
binding.itemCompactRelation.text = character.role + " "
|
||||
binding.itemCompactImage.loadImage(character.image)
|
||||
binding.itemCompactTitle.text = character.name
|
||||
|
||||
// Set the listener for the favorite button
|
||||
binding.charFav.setOnClickListener {
|
||||
listener?.onFavoriteClicked(character)
|
||||
}
|
||||
}
|
||||
|
||||
override fun getItemCount(): Int = characterList.size
|
||||
inner class CharacterViewHolder(val binding: ItemCharacterBinding) :
|
||||
RecyclerView.ViewHolder(binding.root) {
|
||||
|
||||
inner class CharacterViewHolder(val binding: ItemCharacterBinding) : RecyclerView.ViewHolder(binding.root) {
|
||||
init {
|
||||
itemView.setOnClickListener {
|
||||
val char = characterList[bindingAdapterPosition]
|
||||
ContextCompat.startActivity(
|
||||
itemView.context,
|
||||
Intent(
|
||||
itemView.context,
|
||||
CharacterDetailsActivity::class.java
|
||||
).putExtra("character", char as Serializable),
|
||||
ActivityOptionsCompat.makeSceneTransitionAnimation(
|
||||
itemView.context as Activity,
|
||||
Pair.create(
|
||||
binding.itemCompactImage,
|
||||
ViewCompat.getTransitionName(binding.itemCompactImage)!!
|
||||
),
|
||||
).toBundle()
|
||||
)
|
||||
val character = characterList[bindingAdapterPosition]
|
||||
listener?.onFavoriteClicked(character)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlin.math.abs
|
||||
|
||||
class CharacterDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedListener {
|
||||
class CharacterDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedListener, CharacterAdapter.CharacterClickListener {
|
||||
private lateinit var binding: ActivityCharacterBinding
|
||||
private val scope = lifecycleScope
|
||||
private val model: OtherDetailsViewModel by viewModels()
|
||||
@@ -85,10 +85,10 @@ class CharacterDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChang
|
||||
|
||||
val roles = character.roles
|
||||
if (roles != null) {
|
||||
val mediaAdaptor = MediaAdaptor(0, roles, this, matchParent = true)
|
||||
val concatAdaptor =
|
||||
ConcatAdapter(CharacterDetailsAdapter(character, this), mediaAdaptor)
|
||||
|
||||
val adapter = CharacterAdapter(roles)
|
||||
adapter.listener = this // Set the listener
|
||||
binding.characterRecyclerView.adapter = adapter
|
||||
val concatAdapter = ConcatAdapter(adapter)
|
||||
val gridSize = (screenWidth / 124f).toInt()
|
||||
val gridLayoutManager = GridLayoutManager(this, gridSize)
|
||||
gridLayoutManager.spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() {
|
||||
@@ -99,7 +99,6 @@ class CharacterDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChang
|
||||
}
|
||||
}
|
||||
}
|
||||
binding.characterRecyclerView.adapter = concatAdaptor
|
||||
binding.characterRecyclerView.layoutManager = gridLayoutManager
|
||||
}
|
||||
}
|
||||
@@ -148,4 +147,8 @@ class CharacterDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChang
|
||||
binding.characterAppBar.setBackgroundResource(R.color.bg)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onFavoriteClicked(character: Character) {
|
||||
// testing rn
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,6 +66,38 @@
|
||||
android:textSize="16sp"
|
||||
android:transitionName="characterTitle" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/mediaAccessContainer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="end"
|
||||
android:gravity="end"
|
||||
android:paddingStart="32dp"
|
||||
android:paddingEnd="32dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/charFav"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_marginStart="8dp"
|
||||
android:padding="8dp"
|
||||
android:tintMode="src_atop"
|
||||
app:srcCompat="@drawable/ic_round_favorite_border_24"
|
||||
app:tint="@color/bg_opp"
|
||||
tools:ignore="ContentDescription,ImageContrastCheck" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/charNotify"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:padding="8dp"
|
||||
app:srcCompat="@drawable/ic_round_share_24"
|
||||
app:tint="@color/bg_opp"
|
||||
app:tintMode="src_atop"
|
||||
tools:ignore="ContentDescription,ImageContrastCheck" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<ProgressBar
|
||||
|
||||
Reference in New Issue
Block a user