如何在Java Android中分配动态名称?

问题描述 投票:2回答:2

如何初始化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);
        }
java android
2个回答
2
投票

如何初始化textView或任何其他Android组件的名称,其名称仅在运行时已知?

你不能。

TextView this_variable_changes在编译时定义,而String this_variable_changes在运行时更改。

那么如何根据只能在运行时知道的数字创建可变数量的textViews?

一旦你在运行时获得了TextViews的数量,就以编程方式创建那么多的TextViews并将它们添加到布局中。

由于上述原因,您不需要动态名称。您可以做的是将收到的金额映射到相应的TextViews数量,即使用Map,其密钥索引到收到的金额和TextViews的值。


0
投票

在Java中,您可以创建地图或阵列来处理您的特定问题。当您遇到一个让您认为“我需要我的变量动态更改名称”的问题时,您应该尝试思考“关联数组”。在Java中,您可以使用Maps获取关联数组。

也就是说,您可以保留数组列表,例如:

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..
© www.soinside.com 2019 - 2024. All rights reserved.