伙计们我想在我的android项目中使用EditTextand tablelayout创建一个数据网格我已成功使用EditText创建UI但现在我需要帮助为每个字段设置id。
我想将id设置为r1c1,r1c2 ......等,或者有更好的方法来做到这一点。我想计算行总数和列总数。
编辑: 我还有一个添加按钮,可以生成新行。所以以编程方式生成单元格。
Table Cell Snippet:
EditText cb= new EditText(this);
cb.setLayoutParams(params);
cb.setBackgroundColor(Color.parseColor("#ffffff"));
答案 0 :(得分:1)
我认为用“r1c1”,“r1c2”之类的字符串来做这件事并不是很好的方法,但有几种选择:
如果您只需要获取有效的ID,则可以使用静态方法View.generateViewId()
。这是API级别17,因此仅适用于最新版本的Android。见这里:
http://developer.android.com/reference/android/view/View.html#generateViewId%28%29
另一种方法是在二维数组或列表中存储对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());
}
});
有关详细信息,请参阅以下链接:
https://developer.android.com/reference/android/widget/TextView.html#addTextChangedListener%28android.text.TextWatcher%29
https://developer.android.com/reference/android/text/TextWatcher.html
答案 1 :(得分:0)
您可以做的是创建一个包含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>
然后将id设置为editText。
cb.setId(R.id.r1c1);
另一种方法可能是在editText