Android recyclerview
Только начал изучать android, возникла проблема с recyclerview, при добавление нового элемента, все предыдущие становятся идентичными новому, к примеру создаю ворону - она создалась, далее медведя - на выходе получается уже 2 медведя и так далее, подскажите в чём проблема.
class MainActivity : AppCompatActivity(R.layout.activity_main) {
private val binding by viewBinding(ActivityMainBinding::bind)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val adapter = AnimalAdapter()
binding.recycler.adapter = adapter
val list = mutableListOf<Animal>()
fun getKind(): Kind {
if (binding.bird.isChecked)
return Kind.BIRD
if (binding.fish.isChecked)
return Kind.FISH
return Kind.MAMMAL
}
binding.add.setOnClickListener {
val animal = Animal(getKind(), binding.setType.text, binding.setAge.text)
adapter.add(animal)
}
}
}
class AnimalAdapter: RecyclerView.Adapter<AnimalAdapter.AnimalHolder>() {
private val animalList = mutableListOf<Animal>()
class AnimalHolder(item:View):RecyclerView.ViewHolder(item) {
val binding = AnimalItemBinding.bind(item)
}
@SuppressLint("NotifyDataSetChanged")
fun add(animal: Animal) {
animalList.add(animal)
notifyDataSetChanged()
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AnimalHolder {
val inflater = LayoutInflater.from(parent.context)
val itemView = inflater.inflate(R.layout.animal_item, parent, false)
return AnimalHolder(itemView)
}
@SuppressLint("NotifyDataSetChanged")
override fun onBindViewHolder(holder: AnimalHolder, position: Int) {
val item = animalList[position]
holder.binding.apply {
basket.setImageResource(R.drawable.basket)
avatar.setImageResource(
when(item.type) {
Kind.BIRD -> R.drawable.bird
Kind.FISH -> R.drawable.fish
Kind.MAMMAL -> R.drawable.mammal })
view.text = item.view
age.text = item.age.toString()
basket.setOnClickListener {
animalList.removeAt(position)
notifyDataSetChanged()
}
}
}
override fun getItemCount(): Int {
return animalList.size
}
}