feat: charFav WIP

This commit is contained in:
sneazy-ibo
2024-03-07 15:06:50 +01:00
parent e2eae6250b
commit 262d61f2c4
3 changed files with 60 additions and 27 deletions

View File

@@ -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)
}
}
}
}
}

View File

@@ -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
}
}

View File

@@ -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