국가 수도 맞추기 앱 만들기 #02
코틀린으로 안드로이드 앱 개발하기
국가 수도 맞추기 앱 만들기 #02
지난번에는 문제 번호와 국가 정보만 노출되는 부분까지 구현했습니다.
이번에는 이전, 다음 버튼의 무료 슬롯사이트에 대한 동작을 구현하겠습니다. 이것을 Java로 구현한다면 다음과 같습니다.
mPrev무료 슬롯사이트 = (무료 슬롯사이트) findViewById(R.id.prev_무료 슬롯사이트);
mPrev무료 슬롯사이트.setOnClickListener(new View.OnClickListener() {
@Override
public void on무료 슬롯사이트(View v) {
무료 슬롯사이트 = 무료 슬롯사이트 - 1;
if (무료 슬롯사이트 < 0) {
무료 슬롯사이트 = mQuestions.length - 1;
}
updateQuestion();
}
24
mNext무료 슬롯사이트 = (무료 슬롯사이트) findViewById(R.id.next_무료 슬롯사이트);
23
@Override
public void on무료 슬롯사이트(View v) {
무료 슬롯사이트 = (무료 슬롯사이트 + 1) % mQuestions.length;
updateQuestion();
}
});
25
람다식이 기억나지 않는다면?람다 표현식 문법
26v를 가지고 있어서v -를 통해서 변수를 받아서 사용할 수 있습니다. 다음과 같이 말이죠.
mPrev무료 슬롯사이트.setOnClickListener {
v-body
}
지금은 변수 v를 사용하지 않으니 해당 부분도 불필요합니다. 그래서 다음과 같은 뼈대만 남고 여기에 필요한 동작을 넣어주면 됩니다.
mPrev무료 슬롯사이트.setOnClickListener {
...
}
그러면 다음과 같이 되겠죠? 버튼 변수가 mPrev무료 슬롯사이트이 아닌 prev_무료 슬롯사이트라고 사용한 이유는 앞서 말씀드렸듯이 코틀린에서는 레이아웃 위젯의 id를 바로 코드에서 사용 가능하기 때문이라는 사실, 다시 한 번 상기할 수 있습니다.
prev_무료 슬롯사이트.setOnClickListener {
무료 슬롯사이트 = 무료 슬롯사이트 - 1
if (무료 슬롯사이트 < 0) {
무료 슬롯사이트 = mCountryList.mQuestions.size - 1
}
updateQuestion()
}
next_무료 슬롯사이트.setOnClickListener {
무료 슬롯사이트 = (무료 슬롯사이트 + 1) % mCountryList.mQuestions.size
updateQuestion()
}
코드가 한층 간결해졌다는 느낌을 받을 수 있습니다. 정말 별 것 아닌 일이지만 Java에서 코틀린으로 넘어가는 기본 단계라고 생각합니다. 이 예제를 통해 각종 클릭 리스너를 등록할 때 코틀린을 적용할 수 있을 것 같습니다.
클릭 시 동작에 관해 간단히 설명하자면 무료 슬롯사이트는 현재 문제의 번호입니다. mCountryList는 전체 국가 정보가 들어있는 리스트이므로 해당 국가의 개수가 총문제의 수와 같습니다. 따라서 1번 문제에서 이전 버튼 시 가장 끝 번호로 갈 수 있도록 if 문으로 처리되었습니다. 다음 버튼을 눌렀을 때는 무료 슬롯사이트 1씩 증가하며 끝번호로 가면 다시 처음부터 시작되도록 하였습니다.
그 후 updateQuestion()가 동작하는데 해당 함수는 다음 시간에 살펴보겠습니다. 함수 내용은 문제의 번호와 국가 정보를 갱신하고 Answer 버튼에 들어갈 정답, 오답 수도 정보를 갱신하는 동작을 합니다.
다음에는 Answer 4개 버튼에 대한 처리 및 랜덤으로 Answer 버튼을 배치하고 앱을 완성하도록 하겠습니다.
참고로 모든 기능이 구현된 코드는 이미 아래 GitHub에 업로드되어 있습니다.