我正在开发一个具有固定和动态布局部分的活动.动态部分(因此创建的小部件的数量和类型)以这种方式基于数据库值:
对于每个数据库行,我将有一组小部件.并且每个组的组件取决于该数据库行的对象类型(从一列确定).
对于每个数据库行,我将有一组小部件.并且每个组的组件取决于该数据库行的对象类型(从一列确定).
为了保存/恢复实例状态,所有窗口小部件都需要有ID.我想确保我自己的ID不会与生成的R类的ID冲突.
为了更好地处理应用程序(找到哪个窗口小部件映射到哪个数据对象的哪个字段),编号方案像ID = row * 100 fieldindex将是有帮助的. Fieldindex不是一个列数.每个对象类型都应该有自己的字段指示.
由于生成的R中的ID值似乎没有连续的数字,所以我不能仅仅在R中预定义一个ID池,而是使用这些ID而不需要额外的映射.
反对预定义池的第二个原因:大量的fieldindices将导致一个大的ID池.第三,ID池的大小将限制可显示的行数.
我可以使用我自己的布局组件的ID吗?
在gen /文件夹中查看R.java,我的印象是生成的ID都大于0x7f000000.这是否有保证?
如果是,从0x00000000到0x7f000000的范围是免费使用还是保留用于android的内部目的?
解决方法
为什么要避免相同的ID?只有必要的是:
所以,你可以使用你的公式
所以,你可以使用你的公式
ID = row * 100 + fieldindex
即使项目不是独一无二的,我会很好的工作.