我想为动态生成的edittexts实现textwatcher,并希望在这些edittexts中获取文本

时间:2013-02-20 15:07:17

标签: android android-edittext textwatcher

protected void updateTable() {
    // TODO Auto-generated method stub

    final TableLayout tl = (TableLayout) findViewById(R.id.settingtable);
    tl.removeAllViews();

    for(int i=0; i<10; i++) {


        final TableRow tablerow = new TableRow(this);
        tablerow.setLayoutParams(new LayoutParams(
                LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));

        final TextView deviceedit = new TextView(this);

        deviceedit.setText(i+1);
        deviceedit.setTextColor(Color.BLACK);
        deviceedit.setGravity(Gravity.CENTER);
        deviceedit.setTextSize(20);
        deviceedit.setBackgroundResource(R.drawable.lighter_cell_shape);

        tablerow.addView(deviceedit);


        final EditText pondedit = new EditText(this);
        pondedit.setText("");
        pondedit.setTextColor(Color.BLACK);
        pondedit.setGravity(Gravity.CENTER);
        pondedit.setBackgroundResource(R.drawable.lighter_cell_shape);
        tablerow.addView(pondedit);
        pondedit.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                // TODO Auto-generated method stub

            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                // TODO Auto-generated method stub

            }

            @Override
            public void afterTextChanged(Editable s) {
                // TODO Auto-generated method stub


            }
        });

        tl.addView(tablerow);
    }

}

当我在生成的edittexts中输入文本时,如何从edittexts获取这些文本,并参考那些textViews,即1-&gt; hai,2-&gt;再见这样。 TextWatcher是否对此上下文有用?我想从edittexts获取数据,并参考TextView将数据保存在数据库中。

1 个答案:

答案 0 :(得分:0)

可能你会想要在单独的for循环中执行此操作。

要获取在每个EditText中输入的文字,您需要这样的内容:

ArrayList<String> textFromEditText = new ArrayList<>();

textFromEditText.add(pondedit.getText().toString());

不要忘记调用.toString();方法,因为从EditText获得Editable类型对象。

在ArrayList中准备好数据之后,只需在另一个for循环中调用它:

for(i = 0;i < textFromEditText.size();i++){   
     final TextView deviceedit = new TextView(this);

     //other code of your textView


     deviceedit.setText(textFromEditText.get(i));

}

也许有人可以补充我的答案。