From 262d61f2c4666a84dadd16465b59ba21801af62d Mon Sep 17 00:00:00 2001 From: sneazy-ibo <41344259+sneazy-ibo@users.noreply.github.com> Date: Thu, 7 Mar 2024 15:06:50 +0100 Subject: [PATCH] feat: charFav WIP --- .../ani/dantotsu/media/CharacterAdapter.kt | 38 +++++++++---------- .../media/CharacterDetailsActivity.kt | 17 +++++---- .../main/res/layout/activity_character.xml | 32 ++++++++++++++++ 3 files changed, 60 insertions(+), 27 deletions(-) diff --git a/app/src/main/java/ani/dantotsu/media/CharacterAdapter.kt b/app/src/main/java/ani/dantotsu/media/CharacterAdapter.kt index d8c4961c..23f37153 100644 --- a/app/src/main/java/ani/dantotsu/media/CharacterAdapter.kt +++ b/app/src/main/java/ani/dantotsu/media/CharacterAdapter.kt @@ -18,9 +18,15 @@ import java.io.Serializable class CharacterAdapter( private val characterList: ArrayList ) : RecyclerView.Adapter() { + + 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) } } } -} \ No newline at end of file +} diff --git a/app/src/main/java/ani/dantotsu/media/CharacterDetailsActivity.kt b/app/src/main/java/ani/dantotsu/media/CharacterDetailsActivity.kt index 377d5ce1..3ce0fd88 100644 --- a/app/src/main/java/ani/dantotsu/media/CharacterDetailsActivity.kt +++ b/app/src/main/java/ani/dantotsu/media/CharacterDetailsActivity.kt @@ -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) } } -} \ No newline at end of file + + override fun onFavoriteClicked(character: Character) { + // testing rn + } +} diff --git a/app/src/main/res/layout/activity_character.xml b/app/src/main/res/layout/activity_character.xml index 1bcdea25..d73f8d48 100644 --- a/app/src/main/res/layout/activity_character.xml +++ b/app/src/main/res/layout/activity_character.xml @@ -66,6 +66,38 @@ android:textSize="16sp" android:transitionName="characterTitle" /> + + + + + + + +