web-dev-qa-db-ja.com

IDをプログラムでビューに割り当てるにはどうすればよいですか?

XMLファイルでは、Android:id="@+id/something"などのビューにIDを割り当ててからfindViewById()を呼び出すことができますが、プログラムでビューを作成する場合、IDを割り当てる方法を教えてください。

setId()はデフォルトの割り当てと同じではないと思います。 setId()は余分です。

誰でも私を修正できますか?

190
DuyguK

これにはView.setId(integer)を使用できます。 XMLでは、String idを設定していても、これは整数に変換されます。このため、プログラムで追加するViewsには任意の(正の)整数を使用できます。

Viewドキュメントによると

識別子は、このビューの階層内で一意である必要はありません。識別子は正数でなければなりません。

したがって、任意の正の整数を使用できますが、この場合、同等のIDを持ついくつかのビューが存在する可能性があります。階層内のいくつかのビューを検索する場合、いくつかのキーオブジェクトでsetTagを呼び出すと便利です。

この回答 へのクレジット。

6

はい、任意の(正の)整数値を使用して任意のビューでsetId(value)を呼び出してから、findViewById(value)を使用して親コンテナで見つけることができます。異なる兄弟ビューに対して同じ値でsetId()を呼び出すことは有効ですが、findViewById()は最初のビューのみを返すことに注意してください。

5
dmon