1

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

在此处输入图像描述 我想将 id 设置为 r1c1,r1c2... 等等,或者有更好的方法来做到这一点。我想计算我的行总数和列总数。

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

表格单元格片段:

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

2 回答 2

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/文本/TextWatcher.html

于 2013-05-15T14:10:36.997 回答
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);

另一种方法可能是使用setTag方法editText

于 2013-05-15T13:36:10.103 回答