如何初始化TextView
或任何其他Android组件的名称,其名称仅在运行时已知?
例如:
LinearLayout linLayout = (LinearLayout) findViewById(R.id.dynamicLayout);
linLayout.setOrientation(LinearLayout.VERTICAL);
for(int i = 1; i < 5; i++){
String dynamic_name = "myTextView"+i;
//Create new textView named dynamically
TextView dynamic_name = new TextView(this);
//style textView here etc
linLayout.addView(dynamic_name);
}
如何初始化textView或任何其他Android组件的名称,其名称仅在运行时已知?
你不能。
TextView this_variable_changes
在编译时定义,而String this_variable_changes
在运行时更改。
那么如何根据只能在运行时知道的数字创建可变数量的textViews?
一旦你在运行时获得了TextView
s的数量,就以编程方式创建那么多的TextView
s并将它们添加到布局中。
由于上述原因,您不需要动态名称。您可以做的是将收到的金额映射到相应的TextView
s数量,即使用Map
,其密钥索引到收到的金额和TextView
s的值。
在Java中,您可以创建地图或阵列来处理您的特定问题。当您遇到一个让您认为“我需要我的变量动态更改名称”的问题时,您应该尝试思考“关联数组”。在Java中,您可以使用Map
s获取关联数组。
也就是说,您可以保留数组列表,例如:
List<String[]> kList = new ArrayList<String[]>();
for(int k = 0; k < 5; k++){
kList.add(new String[3]);
}
或者也许更接近你所追求的,你可以使用地图:
Map<Integer,String[]> kMap = new HashMap<Integer,String[]>();
for(int k = 0; k < 5; k++){
kMap.put(k, new String[3]);
}
// access using kMap.get(0) etc..