Quick answer: Unity UI Toolkit ListView showing wrong data per row after scroll? Item recycling reuses elements but doesn't reset bindings - re-bind in bindItem.
Inventory list of 1000 items. Scroll fast; rows show data from rows that already scrolled past.
Implement bindItem fully
list.bindItem = (el, i) => {{
el.Q<Label>().text = items[i].Name;
}};bindItem runs per-row on recycle. Reset every visual element you care about.
Or use makeItem for fresh
Disable recycling for short lists; create per row. Slower; simpler.
Verify with scrolling
Scroll to bottom of large list. Visible items should match the underlying data; mismatch = bindItem incomplete.
“ListView reuses visual elements. Reuse without reset = stale visuals.”
Test ListView with long lists during dev. Short-list tests miss recycling bugs.