잡동사니

반응형

질문

동일한 코드를 여러 번 반복하지 않고 양식의 EditText 필드에서 데이터를 효율적으로 추출하고 싶습니다. 다음은 4 개의 EditText에 대한 현재 구현입니다.

    EditText editText1 = (EditText) findViewById(R.id.editText1);
    String message1 = editText1.getText().toString();
    formData.put("data1", message1);

    EditText editText2 = (EditText) findViewById(R.id.editText2);
    String message2 = editText2.getText().toString();
    formData.put("data2", message2);

    EditText editText3 = (EditText) findViewById(R.id.editText3);
    String message3 = editText3.getText().toString();
    formData.put("data3", message3);

    EditText editText4 = (EditText) findViewById(R.id.editText4);
    String message4 = editText4.getText().toString();
    formData.put("data4", message4);

답변1

코드를 반복하지 않는 일반적인 방법은 일반적으로 루프와 함수입니다. 이 경우 데이터 구조와 같은 배열에 EditTexts를 추가하고 반복해야합니다.

예를 들면 :

편집 텍스트를 해시 맵에 저장 한 다음 루프를 사용하여 양식에 추가 할 수 있습니다.

new HashMap<EditText, String>() {{
    put(R.id.et1, "name");
    put(R.id.et2, "phone");
    //etc...
}}.forEach((editText, s) -> formData.put(s, editText.getText().toString()));

유익하지 않은 이름을 사용해도 괜찮다면 배열을 사용할 수 있습니다.

EditText[] toAdd = new EditText[]{findViewById(R.id.et1), findViewById(R.id.et2)};
for (int i = 0; i < toAdd.length; i++) {
    formData.put("data" + i, toAdd[i].getText().toString());
}

또는 둘 다 잘 조합하려면 EditText의 ID를 이름으로 사용할 수 있습니다.

EditText[] toAdd = new EditText[]{findViewById(R.id.et1), findViewById(R.id.et2)};
for (EditText editText : toAdd) {
    formData.put(getResources().getResourceEntryName(editText.getId()), editText.getText().toString());
}


 

 

 

 

출처 : https://stackoverflow.com/questions/63298284/extracting-data-from-multiple-edittexts-without-code-repetition

반응형

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band