Подтвердить что ты не робот

Безопасный диапазон номеров для моих идентификаторов в динамической компоновке?

Я разрабатываю Activity с фиксированной и динамической компоновкой. Динамическая часть (и, следовательно, количество и тип созданных виджетов) основана на значениях базы данных таким образом: Для каждой строки базы данных у меня будет группа виджетов. А компоненты каждой группы зависят от типа объекта (определенного из одного из столбцов) этой строки базы данных.

Для сохранения/восстановления состояния экземпляра все виджеты должны иметь идентификаторы. Я хотел бы убедиться, что мои собственные идентификаторы никогда не будут конфликтовать с идентификаторами, которые из сгенерированного класса R.

Для лучшей обработки внутри приложения (поиск того, какой виджет отображает в какое поле, в котором находится объект данных), может понадобиться схема нумерации, такая как ID = строка * 100 + fieldindex. Fieldindex не является точно номером colum. Каждый тип объекта должен иметь свои собственные поля.

Поскольку значения ID в сгенерированном R, похоже, не имеют последовательных чисел, я не могу просто предопределить пул идентификаторов в R и использовать их без необходимости дополнительного сопоставления. Вторая причина против предопределенного пула: большое количество полевых указателей приведет к большому пулу идентификаторов. В-третьих, размер пула идентификаторов ограничивает количество строк, которое может отображаться.

Есть ли безопасный диапазон номеров, который я могу использовать для своих собственных идентификаторов компонентов компоновки? Глядя на R.java в папку gen/, у меня создалось впечатление, что сгенерированные идентификаторы превышают 0x7f000000. Это гарантировано? И если да, то диапазон от 0x00000000 до 0x7f000000 свободен для использования или зарезервирован для внутренних целей android?

4b9b3361

Ответ 1

Почему вы хотите избежать того же идентификатора? Единственное, что необходимо: An ID need not be unique throughout the entire tree, but it should be unique within the part of the tree you are searching. Таким образом, вы можете использовать свою формулу

ID = строка * 100 + fieldindex

Я буду работать нормально, даже если он не уникален в проекте.