Java 如何为android datagrid设置id?
伙计们,在我的android项目中,我正在尝试使用EditText和tablelayout创建一个数据网格。我已经成功地使用EditText创建了UI,但现在我需要帮助为每个字段设置id 我想将id设置为r1c1,r1c2。。。等等,还是有更好的方法。我想计算我的行总数和列总数 编辑:我还有一个添加按钮,可以生成新行。因此,单元格是以编程方式生成的 表单元格代码段: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
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,这样更容易计算。但我的问题是它会越来越大。我有一个生成新行的添加按钮。但我的问题是它会越来越大。我有一个生成新行的添加按钮。