첫번째 값을 입력받고, 두번째 값을 입력받아서 곱한 후 결과(TextView)에 그 값을 출력하는 어플을 만들고 있습니다.
그리고 입력값 추가 버튼을 누르게되면 누를 때마다 첫번째, 두번째 값을 입력하는 창이 추가로 나오게 했습니다. 결과를 구할때는 각각의 첫번째, 두번째 값을 곱한 다음 그 값들을 모두 더하는 식으로 만드려고 생각하고 있었습니다.
ex) (첫번째 값 * 두번째 값) + (첫번째 값 * 두번째 값) + (첫번째 값 * 두번째 값) ..... // 여기서 각각의 첫번째 값, 두번째 값들은 모두 다른 값을 입력할 것입니다.
입력값추가는 제한없이 누를때마다 텍스트를 추가하는 기능으로 만들었습니다..
public class MainActivity extends AppCompatActivity {
private LinearLayout parentLayout;
private Button addButton;
private EditText input1, input2;
private TextView result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addButton = findViewById(R.id.addButton);
input1 = findViewById(R.id.input1); // input1은 기존에 있는 첫번째 값을 입력하는 EditText
input2 = findViewById(R.id.input2); // input2는 기존에 있는 두번째 값을 입력하는 EditText
result = findViewById(R.id.result); // result는 결과값을 나타내는 TextView
addButton.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View v) {
parentLayout = findViewById(R.id.valueLayout);
// 구분선을 만드는 뷰 생성
View line = new View(getApplicationContext());
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
p.height = 4;
line.setBackgroundColor(0xFF000000);
line.setLayoutParams(p);
parentLayout.addView(line);
// 첫번째 TextView 생성
TextView newValue1 = new TextView(getApplicationContext());
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
newValue1.setLayoutParams(params);
newValue1.setText("첫번째 값");
newValue1.setTextSize(20);
parentLayout.addView(newValue1);
// 첫번쨰 EditText 생성
EditText newInput1 = new EditText(getApplicationContext());
newInput1.setLayoutParams(params);
parentLayout.addView(newInput1);
// 두번째 TextView 생성
TextView newValue2 = new TextView(getApplicationContext());
newValue2.setLayoutParams(params);
newValue2.setText("두번째 값");
newValue2.setTextSize(20);
parentLayout.addView(newValue2);
// 두번째 EditText 생성
EditText newInput2 = new EditText(getApplicationContext());
newInput2.setLayoutParams(params);
parentLayout.addView(newInput2);
}
});
}
}
mainActivity.java
addTextChangedListener를 사용하면 텍스트를 입력할때 바로 계산을 해준다고 해서 사용해봤는데, 정해져있는 텍스트가 있을때는 할 수 있겠는데, 버튼을 눌러 동적으로 텍스트를 여러개를 추가를 하니까 텍스트에 각각의 이벤트가 지정되지 않고 마지막으로 생성된 텍스트만 이벤트 처리가 됬습니다.. 텍스트가 버튼을 눌러 새롭게 생성될 때마다 그 텍스트에게 각각의 이벤트를 지정해주고 싶은데 방법을 알고싶습니다!