如何为android datagrid设置id?

时间:2013-05-15 13:11:57

标签: java android android-tablelayout

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

enter image description here 我想将id设置为r1c1,r1c2 ......等,或者有更好的方法来做到这一点。我想计算行总数和列总数。

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

Table Cell Snippet:

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

2 个答案:

答案 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

上使用setTag方法