伙计们,我正在尝试在我的 Android 项目中使用 EditText 和表格布局创建数据网格,我已经成功地使用 EditText 创建了 UI,但现在我需要帮助来设置每个字段的 ID。
我想将 id 设置为 r1c1、r1c2...等,或者有更好的方法来做到这一点。我想计算我的行总数和列总数。
编辑: 我还有一个生成新行的添加按钮。所以细胞是以编程方式生成的。
表格单元格 fragment :
EditText cb= new EditText(this);
cb.setLayoutParams(params);
cb.setBackgroundColor(Color.parseColor("#ffffff"));
最佳答案
我认为没有什么好的方法可以处理像“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
关于java - 如何为android数据网格设置id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16565951/