Несмотря на то, что я не мог придумать решение, которое не предполагает повторной реализации MotionInputHandler
и SelectionTracker.Builder
(как упомянуто в руководстве), есть хитрый прием для достижения желаемого поведения.
Мы знаем, что TouchInputHandler
выбирает элементы одним щелчком мыши, пока SelectionTracker
не пусто. Это означает, что если у нас есть специальный ключ, сохраненный в SelectoinTracker
, который не связан с реальным элементом списка, мы практически «активируем» режим выбора одним щелчком мыши таким образом. Однако мы также должны убедиться, что наш KeyProvider
не предоставляет тот же специальный ключ для обеспечения согласованности наших данных.
Итак, если вы выбрали специальную клавишу, скажем, ghostKey
, для активации и деактивации режима выбора теперь нужно вызвать mSelectionTracker.select(ghostkey)
или mSelectionTracker.clearSelection()
. Затем вы можете выполнять эти вызовы так, как вам нравится, будь то наличие кнопки, которая активирует и деактивирует режим выбора, или просто вызов этого в процессе создания представления хостинга, т.е. onCreate
, onCreateView
и т. Д.
Если вы используете Kotlin, вы также можете определить некоторые расширения, которые обернутые для вас эти вызовы, так что вы сможете делать такие вещи, как mSelectionTracker.enable()
или mSelectionTracker.disable()