0

次のように、多くのフィールドを持つ行を作成したい:

これが欲しい

Semper que eu clicar em "Add line fields" deve-se criar uma linha abaixo da outra com os 3 campos.

現在、私のコードは EditText を 1 つだけ挿入します。コード:

final List<EditText> newFields = new ArrayList<EditText>();
    final LinearLayout ll = (LinearLayout)findViewById(R.id.llAddNewFields);
    Button btnCreateField = (Button)findViewById(R.id.btCreateField);
    btnCreateField.setOnClickListener( new View.OnClickListener() {
        public void onClick(View v) {               
            MY_COUNT++;
            EditText et = CriaeditText(String.valueOf(MY_COUNT));
            newFields.add(et);
            ll.addView(telefones.get(newFields.size()-1), new ViewGroup.LayoutParams(300,LayoutParams.WRAP_CONTENT));               
        }
    });

EditText を作成するメソッド:

private EditText CriaeditText(String hint) {
    EditText editText = new EditText(this);
    editText.setId(Integer.valueOf(hint));
    editText.setHint(hint);
    editText.setTag(hint);
    return editText;
}

1 つの EditText のみの値を取得するには:

 private List getValuesDynamicField(LinearLayout l, List<EditText> li){
    String[] arrValues = null;
    List data = new ArrayList<String>();
    for (int i = 0; i < l.getChildCount(); i++)
    {
        if (l.getChildAt(i).getVisibility() != View.GONE)
        {
            String p = li.get(i).getText().toString();
            if (!p.equals(""))
            {
                data.add(p);
            }
        }
    }
    return data;                
}

必要に応じて 3 つのフィールドを挿入するようにコードを調整するにはどうすればよいですか?

4

1 に答える 1

1

以下は、3 つの編集テキストを含む行を動的に追加するコードです。

まず、テーブル レイアウトをレイアウト xml ファイルに追加します。その ID を「tablelayout」に設定します。次に、コードで、

 TableLayout tl = (TableLayout)findViewById(R.id.tablelayout);

 TableRow tr = new TableRow(YourActivity.this);

 EditText edit1=new EditText(YourActivity.this);
 edit1.setPadding(5, 5, 5, 5);
 EditText edit2=new EditText(YourActivity.this);
 edit2.setPadding(5, 5, 5, 5);
 EditText edit3=new EditText(YourActivity.this);
 edit3.setPadding(5, 5, 5, 5);

 tr.addView(edit1);
 tr.addView(edit2);
 tr.addView(edit3);

 tl.addView(tr, new TableLayout.LayoutParams(
            LayoutParams.FILL_PARENT,
            LayoutParams.WRAP_CONTENT));

    }
于 2013-05-27T04:37:33.453 に答える