私は、固定レイアウトレイアウトとダイナミックレイアウトレイアウトでアクティビティを開発しています。動的パーツ(したがって、作成されたウィジェットの数とタイプ)は、次のようにデータベース値に基づいています。 すべてのデータベース行に対して、私はウィジェットのグループを持ちます。また、各グループのコンポーネントは、そのデータベース行のオブジェクト型(列の1つから決定)に依存します。ダイナミックレイアウトで自分のIDの安全な番号範囲は?
インスタンスの状態を保存/復元するには、すべてのウィジェットにIDが必要です。自分のIDが生成されたRクラスのIDと決して衝突しないようにしたいと思います。
アプリ内での操作性を向上させるには(どのウィジェットがどのデータオブジェクトのどのフィールドにマッピングするかを見つける)、ID = row * 100 + fieldindexのような番号付けスキームが役立ちます。 Fieldindexは正確に列番号ではありません。すべてのオブジェクトタイプには、独自のフィールドインデックスが必要です。
生成されたRのID値が連続した数を持たないように見えるため、RのIDプールを事前に定義するだけではなく、追加のマッピングを必要とせずにこれらを使用できます。 事前定義されたプールに対する第2の理由:フィールド指数の数が多いと、IDプールが大きくなります。第3に、IDプールのサイズは、表示可能な行数を制限します。
自分のレイアウトコンポーネントのIDに使用できる安全な番号の範囲はありますか? gen /フォルダ内のR.javaを見ると、生成されたIDがすべて0x7f000000より大きいという印象があります。それは保証されていますか? もしそうなら、0x00000000から0x7f000000まで自由に使用できる範囲か、またはAndroidの内部目的のために予約されていますか?
ようこそ。良い質問です、よくある質問をお読みください。私たちは「ありがとう」を避けようとしており、署名は許可されていません。 – vidstige
+1興味深い質問。 Androidは内部的に[0x1f onwards](http://developer.android.com/reference/android/R.id.html#addToDictionary)を使用し、projects/libsは0x7f以降を使用しているようです。 –