私は通常、ID の小さなint[]
配列をコードのどこかに入れます。それらが多数ある場合は、プログラムで作成することを検討してください ( layout.addView(new TextView(..
)。
たとえば、 を開始しActivity
て、エクストラを介して表示する文字列を指定するBundle
場合は、それらを配列として直接配置できます。
void startOther(String[] texts) {
Intent i = new Intent( /* ... */);
i.putExtra("texts", texts);
// start via intent
}
その中Activity
にIDを「定数」として入れます。
// hardcoded array of R.ids
private static final int[] TEXT_IDS = {
R.id.text1,
R.id.text2,
// ...
};
次に、たとえば次のように Bundle と id Array の両方を使用します。
// a List of TextViews used within this Activity instance
private List<TextView> mTextViews = new ArrayList<TextView>(TEXT_IDS.length);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.something);
// find all TextViews & add them to the List
for (int id : TEXT_IDS) {
mTextViews.add((TextView)findViewById(id));
}
// set their values based on Bundle
String[] stringArray = savedInstanceState.getStringArray("texts");
for (int i = 0; i < mTextViews.size() && i < stringArray.length; i++) {
mTextViews.get(i).setText(stringArray[i]);
}
}