Когда я обновляю содержимое моего VerticalGridView
, плитки разлетаются в разные стороны, и в результирующем макете фокус часто находится на плитке, отличной от той, что была до обновления.
Я бы хотел, чтобы фокус оставайтесь на одной плитке с точки зрения позиции. Например: если фокус был на 5-й позиции, он должен оставаться на 5-й позиции после обновления сетки новыми данными.
Как я могу это сделать?
Я обнаружил, что фокусировка сделано в GridLayoutManager.focusViewInLayout(...)
, где вид на mFocusPosition
сфокусирован, но эта позиция рассчитана по-другому.
Я попытался сохранить положение фокуса, очистить фокус от VerticalGridView
, обновить содержимое из VerticalGridView
и фокусировки плитки в сохраненной позиции, но, похоже, я не знаю, когда запросить эту фокусировку, чтобы она была эффективной. Я пытался onGlobalLayoutListener
и onChildViewHolderSelectedAndPositioned
, но я думаю, что они вызваны слишком рано.