Android按ID获取元素组,然后按标记选择

时间:2016-03-02 23:32:55

标签: android android-layout

我有一个表视图,其中我通过xml这样填充行 TableLayout table =(TableLayout)findViewById(R.id.tblLayoutPop);

    for(int i=0;i<3;i++){
        TableRow row = (TableRow) LayoutInflater.from(Popup.this).inflate(R.layout.row, null);
        row.setTag(i);
        ((TextView)row.findViewById(R.id.header)).setText("Some Text");
        EditText ed= (EditText) row.findViewById(R.id.editText);
        ed.setTag(i);
        Button add= (Button) row.findViewById(R.id.buttonAdd);
        add.setTag(i);
        Button remove= (Button) row.findViewById(R.id.buttonRemove);
        remove.setTag(i);
        table.addView(row);
    }

xml here看起来像enter image description here

有3个这样的行,现在点击添加按钮我想增加其特定的编辑文本

为此我尝试了这个,先选择编辑文本,然后按标签

获取
public void add(View v){
        String tag = v.getTag().toString();
        Log.d("TAG", tag);
        int position = Integer.parseInt(tag);

        View eds= findViewById(R.id.editText);
        EditText ed= (EditText) eds.findViewWithTag(position);
        ed.setText(tag);
    }

这不起作用我需要一种方法来选择相应的编辑文本。怎么做

非常感谢任何帮助

由于

2 个答案:

答案 0 :(得分:1)

这是未经测试但可能指向正确的方向

implement View.OnClickListener

在你的循环中点击事件到你的按钮视图

for(int i=0;i<3;i++){
    TableRow row = (TableRow) LayoutInflater.from(Popup.this).inflate(R.layout.row, null);
    row.setTag(i);
    ((TextView)row.findViewById(R.id.header)).setText("Some Text");
    EditText ed= (EditText) row.findViewById(R.id.editText);
    ed.setTag(i);
    Button add= (Button) row.findViewById(R.id.buttonAdd);
    add.setTag(i);
    add.setOnClickListener(this)
    Button remove= (Button) row.findViewById(R.id.buttonRemove);
    remove.setTag(i);
    remove.setOnClickListener(this);
    table.addView(row);
}

然后在您的onClick(View view)方法中,试试这个

@Override
public void onClick(View view) {
    int viewId = view.getId();

    if(viewId == R.id.buttonAdd && view.getTag().toString().equals("0")){
        View parentView = view.getRootView();
        EditText mEditText = (EditText)parentView.findViewWithTag("0");

        int currentEditTextValue = Integer.parseInt(mEditText.getText().toString());
        currentEditTextValue = currentEditTextValue + 1;
        mEditText.setText(String.valueOf(currentEditTextValue));
    }
    // more conditions here ...
}

希望它能为您提供更多想法。如果你有任何问题,请问问题。

答案 1 :(得分:1)

看看你的xml文件

首先,将您的编辑文字标记更改为与按钮

不同的内容

喜欢ed.setTag("ed"+i);

然后你可以从按钮的父视图中通过标签选择编辑文本。因为你已经按照线性布局分组按钮和编辑文本。

喜欢这个

EditText ed= (EditText) ((View) v.getParent()).findViewWithTag("ed"+tag);