Случай, когда вы должны использовать executePendingBindings()
, имеет место (но может быть и больше):
Каждый раз, когда обновление привязки может привести к изменению размера представления и откладыванию вычисления в следующемкадр может заставить измерение считать неправильные значения.
В случае RecyclerView
это происходит, если:
- У вас есть несколько
viewType
s с различными размерами(другой XML) - Ваша высота строки изменяется в зависимости от содержимого представления.
RecyclerView
будет измерять размер строки после завершения onBindViewHolder
. Если на основе данных, которые вы задали в этом методе, высота строки изменяется, измерение не может учитывать дополнительное или уменьшенное пространство, занимаемое вашим новым контентом, если вы не вызываете executePendingBindings()
.
Forcingпривязка к обновлению данных синхронно, а не в следующем кадре, защищает вас от неправильного измерения размера строки (и, возможно, пропускаемого содержимого)