Как получить фиксированный фокус при обновлении содержимого VerticalGridView? - PullRequest
0 голосов
/ 20 марта 2020

Когда я обновляю содержимое моего VerticalGridView, плитки разлетаются в разные стороны, и в результирующем макете фокус часто находится на плитке, отличной от той, что была до обновления.

Я бы хотел, чтобы фокус оставайтесь на одной плитке с точки зрения позиции. Например: если фокус был на 5-й позиции, он должен оставаться на 5-й позиции после обновления сетки новыми данными.

Как я могу это сделать?

Я обнаружил, что фокусировка сделано в GridLayoutManager.focusViewInLayout(...), где вид на mFocusPosition сфокусирован, но эта позиция рассчитана по-другому.

Я попытался сохранить положение фокуса, очистить фокус от VerticalGridView, обновить содержимое из VerticalGridView и фокусировки плитки в сохраненной позиции, но, похоже, я не знаю, когда запросить эту фокусировку, чтобы она была эффективной. Я пытался onGlobalLayoutListener и onChildViewHolderSelectedAndPositioned, но я думаю, что они вызваны слишком рано.

...