Я разрабатываю Activity с фиксированной и динамической компоновкой. Динамическая часть (и, следовательно, количество и тип созданных виджетов) основана на значениях базы данных таким образом: Для каждой строки базы данных у меня будет группа виджетов. А компоненты каждой группы зависят от типа объекта (определенного из одного из столбцов) этой строки базы данных.
Для сохранения/восстановления состояния экземпляра все виджеты должны иметь идентификаторы. Я хотел бы убедиться, что мои собственные идентификаторы никогда не будут конфликтовать с идентификаторами, которые из сгенерированного класса R.
Для лучшей обработки внутри приложения (поиск того, какой виджет отображает в какое поле, в котором находится объект данных), может понадобиться схема нумерации, такая как ID = строка * 100 + fieldindex. Fieldindex не является точно номером colum. Каждый тип объекта должен иметь свои собственные поля.
Поскольку значения ID в сгенерированном R, похоже, не имеют последовательных чисел, я не могу просто предопределить пул идентификаторов в R и использовать их без необходимости дополнительного сопоставления. Вторая причина против предопределенного пула: большое количество полевых указателей приведет к большому пулу идентификаторов. В-третьих, размер пула идентификаторов ограничивает количество строк, которое может отображаться.
Есть ли безопасный диапазон номеров, который я могу использовать для своих собственных идентификаторов компонентов компоновки? Глядя на R.java в папку gen/, у меня создалось впечатление, что сгенерированные идентификаторы превышают 0x7f000000. Это гарантировано? И если да, то диапазон от 0x00000000 до 0x7f000000 свободен для использования или зарезервирован для внутренних целей android?