Why my RecyclerView scroll became janky on low-end devices and how I fixed it
I was testing my student quiz app on a Tecno Spark 4 and noticed the scroll performance went from smooth to really janky when loading lists with images and text. At first I thought it was the images, but after profiling with Android Studio I realized the issue was actually the ViewHolder binding - I was doing too much work on the main thread inside onBindViewHolder. The fix was simple: I moved all the heavy lifting to the adapter's onBindViewHolder by using a background thread for image loading and making sure I wasn't recreating objects unnecessarily. I also added a ViewHolder recycling check to avoid binding stale data. After the change the scroll felt buttery even on that cheap device. Here is the key part: bindViewHolder(holder, position) { val item = items[position] holder.bind(item) // keep this lightweight, no network calls here } Lesson learned: always profile on a real low-end device, not just the emulator.