개요
아무리 enphago
가 대답을 잘한다 한들 실제로 있는 단어인지 납득이 안가면 게임하는 맛이 안난다. 말풍선을 클릭하면 해당 단어의 뜻을 바로바로 표시해주어 플레이어를 납득시켜보자.
코루틴과 XML 파싱
단어 뜻 풀이는 역시 표준국어대사전 API
를 이용할 것이다. 사전 API 인 만큼 단어 검색에 특화되어 있다.
단어 사전 검색을 위해 필요한 정보는 word
태그 내용과 definition
태그 내용이다. 위 내용은 xml 파싱
을 통해 간단히 가져올 수 있다.
검색 결과의 반환 값으로 SearchResult
라는 Data Class
를 따로 구현했다. 이 클래스는 다음과 같은 요소로 이루어져있다.
- 단어
- 품사
- 정의
위 3가지 값을 한 번에 묶어서 반환하고 이를 받아 화면에 dialog
형태로 뿌려준다.
이 때 네트워크
통신이 필요하므로 역시나 백그라운드에서 작업해주어야 한다. 2장
에서 단어 검사를 하는 과정과 같이 코루틴
을 이용하여 비동기 프로그래밍을 해주었다.
결과 표시
단어 검색은 채팅창의 말풍선 클릭을 통해 이루어진다. 다른말로 하면 RecyclerView
의 item
내의 widget
을 클릭하는 것이다. 따라서 단어 검색 요청 코드를 RecyclerView
어댑터의 holder
내에 작성했다.
다만 똑같은 코드를 2개의 holder
에 모두 작성해야 한다는 점은 개선해야 할 이슈인 것 같다. 또한 RecyclerView
의 adapter
를 담당하는 클래스에 너무 부가적인 코드를 많이 작성하는 것도 좋은 개발 방법은 아닌 것 같다. 이것들은 좀 더 고민해보고 아이디어가 떠오르면 코드를 수정하여 개선해 볼 생각이다.
위와 같은 모습으로 출력된다.
마무리
이로써 기능적인 구현에 관련된 내용의 포스팅은 끝났다. 다음은 마지막 포스팅으로 enphago
의 단어 학습 기능에 대해 다루겠다.
Github 저장소: https://github.com/yjyoon-dev/enphago-android