awacleberryの備忘録

アナログ人間のデジタル日記。

【Android】View の id とエントリ名の変換

エントリ名から id を取得

hoge というエントリ名から、R.id.hoge という id の数値を取得するなら、

int viewId = getResources().getIdentifier("hoge", "id", getPackageName());

この viewIdfindViewById(viewId) できる。for で連番しているエントリ名などから View を取得するのに便利。

id からエントリ名を取得

逆に、id の数値からエントリ名を取得するなら、

String viewIdStr = getResources().getResourceEntryName(viewId);

View から getId() とかで id さえ取得していれば、それを上記のようにエントリ名へ変換して正規表現でチェックとかできる。

他のリソース

View の id 以外でもできる。

int strId = getResources().getIdentifier("hoge", "string", getPackageName());

注意点

getIdentifier について、ドキュメント曰く、

Note: use of this function is discouraged. It is much more efficient to retrieve resources by identifier than by name.

オススメできない方法とのこと。

getIdentifier