動的に生成した 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 衝突してバグる可能性ありますからね。