60 lines
No EOL
2.3 KiB
Kotlin
60 lines
No EOL
2.3 KiB
Kotlin
package ani.dantotsu.media
|
|
|
|
import android.annotation.SuppressLint
|
|
import android.app.Activity
|
|
import android.content.Intent
|
|
import android.view.LayoutInflater
|
|
import android.view.ViewGroup
|
|
import androidx.core.app.ActivityOptionsCompat
|
|
import androidx.core.content.ContextCompat
|
|
import androidx.core.util.Pair
|
|
import androidx.core.view.ViewCompat
|
|
import androidx.recyclerview.widget.RecyclerView
|
|
import ani.dantotsu.databinding.ItemCharacterBinding
|
|
import ani.dantotsu.loadImage
|
|
import ani.dantotsu.setAnimation
|
|
import java.io.Serializable
|
|
|
|
class CharacterAdapter(
|
|
private val characterList: ArrayList<Character>
|
|
) : RecyclerView.Adapter<CharacterAdapter.CharacterViewHolder>() {
|
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CharacterViewHolder {
|
|
val binding =
|
|
ItemCharacterBinding.inflate(LayoutInflater.from(parent.context), parent, false)
|
|
return CharacterViewHolder(binding)
|
|
}
|
|
|
|
@SuppressLint("SetTextI18n")
|
|
override fun onBindViewHolder(holder: CharacterViewHolder, position: Int) {
|
|
val binding = holder.binding
|
|
setAnimation(binding.root.context, holder.binding.root)
|
|
val character = characterList[position]
|
|
binding.itemCompactRelation.text = character.role + " "
|
|
binding.itemCompactImage.loadImage(character.image)
|
|
binding.itemCompactTitle.text = character.name
|
|
}
|
|
|
|
override fun getItemCount(): Int = characterList.size
|
|
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()
|
|
)
|
|
}
|
|
}
|
|
}
|
|
} |