Безопасный диапазон номеров для моих собственных идентификаторов в динамическом макете? - PullRequest
10 голосов
/ 24 января 2012

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

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

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

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

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

1 Ответ

2 голосов
/ 24 января 2012

Почему вы хотите избежать того же идентификатора?Единственное, что необходимо, это: 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 = row * 100 + fieldindex

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...