java - 我如何引用尚未在 xml 文件中创建的 View ?

标签 java android eclipse android-layout

//首先我有这个方法,下面是我的问题

public void addrows(){

     TableRow fila;
     tabla = (TableLayout)findViewById(R.id.tabla);
     TextView txtNombre;


     for(int i = 0;i<id;i++){

         String x[] = helper.leer(); 

         layoutFila = new TableRow.LayoutParams(TableRow.LayoutParams.WRAP_CONTENT,
                 TableRow.LayoutParams.WRAP_CONTENT);
         caja= new CheckBox(this);

         fila = new TableRow(this);
         fila.setLayoutParams(layoutFila);


         txtNombre = new TextView(this);

         txtNombre.setId(i);


         txtNombre.setTextSize(17);
         txtNombre.setText(x[i]);
         txtNombre.setGravity(Gravity.LEFT);

       //  txtNombre.setLayoutParams(layoutTexto);
         caja.setText("");
         caja.setId(i);
         fila.addView(txtNombre);
         fila.addView(caja);
         tabla.addView(fila);
     }
    }   

我知道当 oncreate() 方法启动时,复选框对象被创建,然后我将一个数字 id 从 0 分配到 for 循环停止的任何地方,但是在程序的后面我需要检索哪些复选框被点击所以首先我需要 id 但 eclipse 不会让我输入数字 id,请帮忙!对不起我的英语我是 android 和英语的菜鸟

this.CheckBox = (CheckBox)this.findViewById(R.id.?);

最佳答案

正如您可能在 View 中读到的那样类文档 ID 在您搜索的树中应该是唯一的。

您为 TextView 和 Checkbox 设置相同的 id。

如果您知道您将在创建后稍后访问它们,请将对它们的引用保留在数组中,而不是稍后尝试使用 findViewById 检索它们。

但更好的解决方案是为它们设置 onClick 事件监听器并跟踪选中/取消选中它们。

在@HalR 的回答中,您可以阅读如何为您的复选框设置 onCheckedChanged 事件监听器。按照他的解决方案,将有一个已选中复选框的 ArrayList。

下一步,您必须递增正确的 TextView 的值,因此您需要耦合 CheckBox 和 TextView。

我认为最好的方法是使用 TextView id 的值为 CheckBox 设置 Tag。

因此,在用户提交后,您遍历复选框列表、getTag 并在 findViewById 中使用它来获取 TextView 并更新其值。

Id(IDentifier 的缩写)是一个整数,用于唯一标识元素,可以在 findViewById 中使用它来获取 View 元素。你可以阅读more about ID in this answer

标签用于将 View 元素与一些额外数据相关联,您可能会在 getTag documentation 中读到.它以对象类型作为参数,因此您可以将任何东西设置为标签,而不仅仅是数字。在你的情况下,你可以将 TextView 设置为 ChechBox 的标签而不是它的 id,它也可以工作。

关于java - 我如何引用尚未在 xml 文件中创建的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16257126/

相关文章:

java - 将插件和文件传输到新的 ADT 版本 23?

android - ListView 使用两个光标适配器?

Eclipse 中的 Java EE 项目文件夹结构?

java - Java中有 "this"的名称吗?

java - GWT 和 AppEngine 中的 Google Oauth2

android - 停止重复计时器android

java - 检测android/java中多列数组列表中的重复元素?

eclipse - 屏幕截图和打印屏幕在 Eclipse 中不起作用

java - xpath 在一次调用中解析多个值

java - 如何使用 Apache POI 和 Java 代码检查 Excel 文件中是否存在信息