마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

같은 소스를 반복하고 있습니다.

0 추천

지금 아래 소스를 이 버튼을 눌렀을 때도 쓰고 저 버튼을 눌렀을 때도 쓰고 있습니다.

String 처럼 한 번 적으면 그 다음부턴 길게 안 적어도 되게 할 수 없을까요?

 

TextView st = (TextView) findViewById(R.id.settext);
		String si = "";
		TextView dates = (TextView) findViewById(R.id.tvDate);
		if (dates.getText().toString().contains("(월)")) {
			if (st.getText().toString().equals("1학년 1반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 2반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 3반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 4반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 5반")) {
				si = "영어 체육 진로\n사회 한문 국어 과학";
			} else if (st.getText().toString().equals("1학년 6반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 7반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 8반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 9반")) {
				si = "해당 학급이 존재하지 않습니다.";
			}

		} else if (dates.getText().toString().contains("(화)")) {
			if (st.getText().toString().equals("1학년 1반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 2반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 3반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 4반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 5반")) {
				si = "도덕 국어 미술\n미술 음악 도덕 수학";
			} else if (st.getText().toString().equals("1학년 6반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 7반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 8반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 9반")) {
				si = "해당 학급이 존재하지 않습니다.";
			}

		} else if (dates.getText().toString().contains("(수)")) {
			if (st.getText().toString().equals("1학년 1반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 2반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 3반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 4반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 5반")) {
				si = "수학 영어 체육\n국어 과학 영어";
			} else if (st.getText().toString().equals("1학년 6반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 7반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 8반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 9반")) {
				si = "해당 학급이 존재하지 않습니다.";
			}

		} else if (dates.getText().toString().contains("(목)")) {
			if (st.getText().toString().equals("1학년 1반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 2반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 3반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 4반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 5반")) {
				si = "체육 국어 수학\n과학 스포츠 사회 한문";
			} else if (st.getText().toString().equals("1학년 6반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 7반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 8반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 9반")) {
				si = "해당 학급이 존재하지 않습니다.";
			}

		} else if (dates.getText().toString().contains("(금)")) {
			if (st.getText().toString().equals("1학년 1반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 2반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 3반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 4반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 5반")) {
				si = "음악 사회 도덕\n국어 한문 영어";
			} else if (st.getText().toString().equals("1학년 6반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 7반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 8반")) {
				si = "";
			} else if (st.getText().toString().equals("1학년 9반")) {
				si = "해당 학급이 존재하지 않습니다.";
			}

		} else if (dates.getText().toString().contains("(토)")) {
			si = "시간표 없음";
		} else if (dates.getText().toString().contains("(일)")) {
			si = "시간표 없음";
		}
		TextView time = (TextView) findViewById(R.id.time);
		time.setText(si);

 

위 소스를 몇 번 붙혀넣다 보니 너무 길어져서 말이예요..

하루퍼 (710 포인트) 님이 2014년 9월 7일 질문
객체화해서 재사용하세요
객체화가 뭔지.. 잘 모르겠습니다..

3개의 답변

+1 추천
DB사용하세요.

월요일 1학년 5반으로 쿼리날려서 바로 시간표 얻어올수 있습니다.

즉 저 많은 내용을 한줄로 줄일 수 있습니다.
q1212 (26,020 포인트) 님이 2014년 9월 12일 답변
0 추천
if (dates.getText().toString().contains("(월)")) 
{
  if (st.getText().toString().equals("1학년 5반"))
    si = "영어 체육 진로\n사회 한문 국어 과학";
  else if (st.getText().toString().equals("1학년 9반"))
    si = "해당 학급이 존재하지 않습니다.";
  else
    si = "";
}

따로 db를 만들지 않는다면 이런 식으로 줄이는 수 밖에 없지 싶네요...

쎄미 (162,410 포인트) 님이 2014년 9월 11일 답변
0 추천
문자열에서 숫자만 가져오기

public static String getOnlyNumberString(String str) {
 if (str == null)
  return str;

 StringBuffer sb = new StringBuffer();
 int length = str.length();
 for (int i = 0; i < length; i++) {
  char curChar = str.charAt(i);
  if (Character.isDigit(curChar))
   sb.append(curChar);
 }
 return sb.toString();
}

 

String uword = st.gettext();  // 먼저 문자열을 uword에 가져오고

String[] uarry = uword.split(" "); // uword를 split 합니다 (1학년  이사이에 스페이스 9반)

 

//그런후에 위에 함수코드를 이용해서 숫자만 가져오게 한 후에 uarray에 숫자만 들어가도록 하고

uarray[0]=getOnlyNumberString(uarray[0]);

uarray[1] =getOnlyNumberString(uarray[1]);

 

bool result =false;

for(int i=1; i<=3; i++)  // 학년 루핑

{

    for(int j=1; j<=9; j++)  // 반 루핑

{

      if(uarray[0]==i && uarray[1]==j)

   {

        // 작성하고 보니 요일 체크 하는 부분이 들어가야겠네요

       // 암튼 대충 이런식으로도 줄일수 있습니다

 

        // 예를 들어서 1학년 9반에서 if문이 걸리면

       // 학년이 있는거고

       result = true;

       break;

   }

   if(result)

     beak;

}

// 루핑을 다 돌아도 if문이 안걸리면 학년이 없는거고...

if(result)

  si="";

else

  si="해당 학급이 없습니다";

 

//이렇게 해도 되지 않을까요?

 

doridori2013@nate.com

}

익명사용자 님이 2014년 9월 12일 답변
2014년 9월 12일 수정
...