【问题标题】:i want to implement textwatcher for dynamically generated edittexts and want to get text in those edittexts我想为动态生成的edittexts实现textwatcher,并希望在这些edittexts中获取文本
【发布时间】:2013-02-20 15:07:16
【问题描述】:
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);
    }

}

当我在生成的编辑文本中输入文本时,如何从编辑文本中获取这些文本并引用这些文本视图,即 1-> hai , 2-> 像这样。 TextWatcher 对这种情况有用吗?我想从edittexts中获取数据并参考TextView将数据保存在数据库中。

【问题讨论】:

    标签: android android-edittext textwatcher


    【解决方案1】:

    您可能希望在单独的 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));
    
    }
    

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

    【讨论】:

    • 忘记在每次动态创建 EditText 时为您澄清这一点,它将具有不同的内存引用。帮助您为创建的每个 EditText 创建不同的pondedit.addTextChangedListener(new TextWatcher()...);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    • 2011-10-15
    • 1970-01-01
    相关资源
    最近更新 更多