/
CharacterAdapter.kt
56 lines (48 loc) · 2.42 KB
/
CharacterAdapter.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package com.example.rickandmortyapp.ui.home
import android.content.Context
import android.graphics.PorterDuff
import android.graphics.PorterDuffColorFilter
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import coil.api.load
import coil.transform.CircleCropTransformation
import com.example.rickandmortyapp.R
import com.example.rickandmortyapp.data.model.Character
import com.example.rickandmortyapp.util.ColorUtil
import com.example.rickandmortyapp.util.ItemClickListener
import kotlinx.android.synthetic.main.row_character.view.*
class CharacterAdapter(private val characters:List<Character>,
private val itemClickListener: ItemClickListener) : RecyclerView.Adapter<CharacterAdapter.CharacterViewHolder>(){
class CharacterViewHolder(itemView:View, private val context: Context):RecyclerView.ViewHolder(itemView){
fun bind(character:Character, itemClickListener: ItemClickListener){
itemView.textViewCharacterName.text = character.name
itemView.textViewSpecies.text = character.species
itemView.textViewGender.text = character.gender
itemView.imageViewCharacterImage.load(character.image){
crossfade(true)
placeholder(R.drawable.ic_morty)
transformations(CircleCropTransformation())
}
itemView.characterCardView.setOnClickListener {
itemClickListener.onClick(character)
}
if(character.status!=null){
if(character.status.equals("Dead")){
itemView.characterCardView.cardBackgroundColor.withAlpha(0.7.toInt())
}
}
val characterColor = ColorUtil(context = context).getCharacterColor(character.species)
itemView.constraintLayout.background.colorFilter = PorterDuffColorFilter(characterColor, PorterDuff.Mode.SRC_ATOP )
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CharacterViewHolder {
return CharacterViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.row_character,parent,false), parent.context)
}
override fun getItemCount(): Int = characters.size
override fun onBindViewHolder(holder: CharacterViewHolder, position: Int) {
val character = characters[position]
holder.bind(character,itemClickListener)
}
}