Java 如何为android datagrid设置id?

Java 如何为android datagrid设置id?,java,android,android-tablelayout,Java,Android,Android Tablelayout,伙计们,在我的android项目中,我正在尝试使用EditText和tablelayout创建一个数据网格。我已经成功地使用EditText创建了UI,但现在我需要帮助为每个字段设置id 我想将id设置为r1c1,r1c2。。。等等,还是有更好的方法。我想计算我的行总数和列总数 编辑:我还有一个添加按钮,可以生成新行。因此,单元格是以编程方式生成的 表单元格代码段: EditText cb= new EditText(this); cb.setLayoutParams(para

伙计们,在我的android项目中,我正在尝试使用EditText和tablelayout创建一个数据网格。我已经成功地使用EditText创建了UI,但现在我需要帮助为每个字段设置id

我想将id设置为r1c1,r1c2。。。等等,还是有更好的方法。我想计算我的行总数和列总数

编辑:我还有一个添加按钮,可以生成新行。因此,单元格是以编程方式生成的

表单元格代码段:

    EditText cb= new EditText(this);
    cb.setLayoutParams(params);
    cb.setBackgroundColor(Color.parseColor("#ffffff"));

您可以创建一个包含以下ID的xml文件:

res/values/ids.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <item name="r1c1" type="id"/>
    <item name="r1c2" type="id"/>
    <item name="r1c3" type="id"/>
    //some others id
</resources>

另一种方法是在
editText

上使用该方法,您可以创建一个包含以下ID的xml文件:

res/values/ids.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <item name="r1c1" type="id"/>
    <item name="r1c2" type="id"/>
    <item name="r1c3" type="id"/>
    //some others id
</resources>

另一种方法是在您的
editText

上使用该方法。我认为没有一种好方法可以使用“r1c1”、“r1c2”等字符串,但有几个选项:

如果您只需要获取一个有效的id,那么可以使用静态方法
View.generateView()
。不过,这是API级别17,因此仅适用于最新版本的Android。请参见此处:

另一种方法是将对
EditText
对象的引用存储在二维数组或列表中。当您需要对行或列求和时,您需要迭代数组的适当部分并从那里开始

第三种选择是保留来自每个
EditText
的二维值数组,而不是
EditText
本身。您可以使用
TextWatcher
这样做:

// Creating EditText for (row,col)
// Expand size of 2D array if necessary
EditText cb = new EditText(this);
cb.setLayoutParams(params);
cb.setBackgroundColor(Color.parseColor("#ffffff"));
cb.setInputType(InputType.TYPE_CLASS_NUMBER); // So the user can only enter numbers
cb.addTextChangedListener(new TextWatcher() {
  public void afterTextChanged(Editable s) {
    mValues[row][col] = Integer.valueOf(s.toString());
  }
});
有关更多详细信息,请参阅这些链接:


我不认为有什么好方法可以使用“r1c1”、“r1c2”等字符串,但有几个选项:

如果您只需要获取一个有效的id,那么可以使用静态方法
View.generateView()
。不过,这是API级别17,因此仅适用于最新版本的Android。请参见此处:

另一种方法是将对
EditText
对象的引用存储在二维数组或列表中。当您需要对行或列求和时,您需要迭代数组的适当部分并从那里开始

第三种选择是保留来自每个
EditText
的二维值数组,而不是
EditText
本身。您可以使用
TextWatcher
这样做:

// Creating EditText for (row,col)
// Expand size of 2D array if necessary
EditText cb = new EditText(this);
cb.setLayoutParams(params);
cb.setBackgroundColor(Color.parseColor("#ffffff"));
cb.setInputType(InputType.TYPE_CLASS_NUMBER); // So the user can only enter numbers
cb.addTextChangedListener(new TextWatcher() {
  public void afterTextChanged(Editable s) {
    mValues[row][col] = Integer.valueOf(s.toString());
  }
});
有关更多详细信息,请参阅这些链接:


您想通过编程设置ID吗?是的,我知道它的textview.setId(int i);但我需要字符串作为id,这样更容易计算。你想通过编程设置id吗?是的,我知道它的textview.setId(inti);但我需要字符串作为id,这样更容易计算。但我的问题是它会越来越大。我有一个生成新行的添加按钮。但我的问题是它会越来越大。我有一个生成新行的添加按钮。