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

时间:2018-09-06 21:45:07

标签: java android

如何使用仅在运行时才知道的名称来初始化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);
        }

3 个答案:

答案 0 :(得分:2)

  

如何使用仅在运行时才知道的名称来初始化textView或任何其他Android组件的名称?

你不能。

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

  

然后如何基于只能在运行时知道的数字创建可变数量的textView?

一旦您在运行时获得了TextView的数量,就可以通过编程方式创建那么多TextView,并将其添加到布局中。

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

答案 1 :(得分:0)

在Java中,但是您可以创建Maps或Arrays来处理您的特定问题。当遇到使您认为“我需要我的变量来动态更改名称”的问题时,您应该尝试考虑“关联数组”。在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..

答案 2 :(得分:0)

对我来说简单的解决方案是将您的 cmd 类型 ipconfig 复制您的 IP v4 地址并粘贴到 android 模拟器主机中

http://your-ip-v4-address:3000/