I have a list of 8 countries and i want that when the arrow image of the first country is clicked then the second country name (china) should be deleted from the list. but instead 3rd country gets deleted. My country adapter code is given below
After clicking on first country arrow the list become
Below is my Country Adapter code
class CountryAdapter(
private val context: Context,
private val activity: Activity,
private val countries: MutableList<Countries>,
) :
RecyclerView.Adapter<RecyclerView.ViewHolder>() {
private var isPressed = false
private var deletedList: HashMap<Int, Countries> = HashMap()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
val viewHolder: CountryViewHolder
val inflater = LayoutInflater.from(parent.context)
val holderView = inflater.inflate(R.layout.country_item, parent, false)
viewHolder = CountryViewHolder(holderView)
viewHolder.countryName = holderView.findViewById(R.id.countryName)
viewHolder.arrowImg = holderView.findViewById(R.id.arrow)
return viewHolder
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
holder.setIsRecyclable(false)
val viewHolder = holder as CountryViewHolder
val txt = viewHolder.itemView.findViewById<TextView>(R.id.countryName)
val baseLayout = viewHolder.itemView.findViewById<LinearLayout>(R.id.base_linear_layout)
val basedecLayout = viewHolder.itemView.findViewById<LinearLayout>(R.id.base_des_layout)
val arrow = viewHolder.itemView.findViewById<ImageView>(R.id.arrow)
if (position != 0) {
arrow.visibility = View.GONE
} else {
basedecLayout.setOnClickListener {
arrow.performClick()
}
arrow.setOnClickListener {
if (!isPressed) {
for (i in 1..1) {
deletedList[i] = countries[1]
countries.removeAt(1) //Problem is here
notifyItemRemoved(1) // problem is here
}
}
// else {
// for (i in 3 downTo 1) {
// countries.add(1, deletedList[i]!!)
// notifyItemInserted(1)
// }
// deletedList.clear()
// }
isPressed = !isPressed
}
}
txt.text = countries[position].name
}
override fun getItemCount(): Int {
return countries.size
}
class CountryViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
lateinit var countryName: TextView
lateinit var arrowImg: ImageView
}
}