To programmatically add elements to your layout, you need to instantiate the Widget
(TextView
, EditText
, Button
etc) and add to the container using the method addView(View view)
or addView(View view, LayoutParams params)
.
This behavior of composing hierarchy and adding View's
is characteristic of the class ViewGroup
, we can associate a ViewGroup
to a tree of View's
. Examples of it would be: LinearLayout
, RelativeLayout
, FrameLayout
and the rest.
An example of programmatic addition of new Widgets
would be:
// Aqui entra o seu container, pai dos elementos
// Basta escolher algum que pertenca ao seu layout.
// Recomendo um LinearLayout com orientation="vertical"
ViewGroup container = findViewById(R.id.container);
// Ou
ViewGroup container = getView().findViewById(R.id.container);
// Iremos instanciar o novo Widget a ser adicionado
// Em sua Activity
EdiText novoEdit = new EdiText(this);
// Ou em um Fragment
EditText novoEdit = new EditText(getActivity());
// Dependendo de como for seu layout, podem haver outros edits que nao
// estao relacionados com a soma diretamente, para sabermos que ele
// foi adicionado programaticamente, colocamos uma marcacao
novoEdit.setTag(R.id.container, true);
// Se quiser setar um texto inicial
novoEdit.setText("42");
// Se quiser adicionar um Hint que aparecerá quando nenhum texto for digitado
novoEdit.setHint("Entre com o numero");
// Aqui adicionamos o Widget ao container
container.addView(novoEdit);
// Ou
// Aqui pode variar um pouco dependendo da subclasse do container
container.addView(novoEdit, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
To add up the values:
// Aqui novamente entra o seu container, pai dos elementos
ViewGroup container = findViewById(R.id.container);
// Quantos filhos ele tem
int childCount = container.getChildCount();
// Itero sobre os filhos do container
for(int i = 0; i < childCount; ++i) {
// Pegamos o filho no indice i
View filho = container.getChildAt(i);
// Se ele for um EditText
if(filho instanceof EditText) {
EditText editFilho = (EditText) filho;
// Eh um EditText criado programaticamente?
// Para isso verificamos a marcacao que fizemos
if(editFilho.getTag(R.id.container) != null) {
String texto = editFilho.getText().toString();
// TODO Fazer tratamento de vazio e de exception...
// TODO Usar o texto para fazer a media...
}
}
}