ページ

2013/11/17

[Android]R.idの追加方法

通常レイアウトで R.id を追加するのだけど
動的に生成した View に id を設定したいときは
R.id も動的に生成しなければいけません。
方法は以下の2つです。

リソースから生成する

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item name="INTERNAL_EMPTY_ID" type="id"/>
    <item name="INTERNAL_PROGRESS_CONTAINER_ID" type="id"/>
    <item name="INTERNAL_LIST_CONTAINER_ID" type="id"/>
</resources>

プログラムから生成する

int viewId = View.generateViewId();
ただし、 API Level 17 (Android4.2) からです。

コレで、以下の ExpandableListFragment の内部の id を固定値から動的に生成した id に変更しました。
ExpandableListFragment - OrangeSignal ブログ
動的に生成しないとライブラリプロジェクトとかで id 衝突してバグる可能性ありますからね。