recyclerView heights decrease on scroll

class MyAdapter : RecyclerView.Adapter<MyAdapter.ViewHolder>() {

    // ViewHolder class implementation

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val view = LayoutInflater.from(parent.context).inflate(R.layout.item_layout, parent, false)
        return ViewHolder(view)
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        // Bind data to views
    }

    override fun getItemCount(): Int {
        // Return the number of items in the data set
    }

}

class MyActivity : AppCompatActivity() {

    // Activity class implementation

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val recyclerView = findViewById<RecyclerView>(R.id.recyclerView)
        val layoutManager = LinearLayoutManager(this)
        recyclerView.layoutManager = layoutManager

        val adapter = MyAdapter()
        recyclerView.adapter = adapter

        // Set a listener to adjust item heights on scroll
        recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
            override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
                super.onScrolled(recyclerView, dx, dy)

                // Adjust item heights based on scroll direction (dy)
                if (dy > 0) {
                    // Scrolling down
                    adjustItemHeights(recyclerView, false)
                } else {
                    // Scrolling up
                    adjustItemHeights(recyclerView, true)
                }
            }
        })
    }

    private fun adjustItemHeights(recyclerView: RecyclerView, increaseHeight: Boolean) {
        for (i in 0 until recyclerView.childCount) {
            val child = recyclerView.getChildAt(i)
            val viewHolder = recyclerView.getChildViewHolder(child) as MyAdapter.ViewHolder

            // Adjust item height based on the scroll direction
            val newHeight = if (increaseHeight) {
                (child.height + 10).coerceAtMost(500) // Increase height (example)
            } else {
                (child.height - 10).coerceAtLeast(100) // Decrease height (example)
            }

            // Set the adjusted height to the item view
            viewHolder.itemView.layoutParams.height = newHeight
            viewHolder.itemView.requestLayout()
        }
    }
}