길고긴 고내의 시간 끝에 드디어 필터링 기능을 완료하였다.
처음 원했던 기능은 검색 리스트에서 검색을 하면 자동완성되는 기능이었다.
여러가지 방법을 시도하여 본 끝에 구현을 하였다. 처음에는 진짜 지금 생각해보면 말도 안돼는 방식으로 구현하려고 하였던거 같아. 그래도 고생했으니까 기록으로 남겨봐야겠다.
첫번 째 시도.
API가 국가 리스트를 한 번에 반환해주는 것과 국가명을 쿼리로 넣어서 보내면 응답해주는것이 있었다.
그래서 아래와 같이 생각했다.
1. 국가리스트 API를 날려서 첫 화면에 모든 국가를 표시해준다.
2. 국가명을 날려서 받은 결과값을 받는다.
3. 기존에 국가리스트가 있던 화면을 갈아버리고 국가명을 날려 받은 결과값을 받는다.
이렇게 생각했는데 지금 생각해보면 진짜 무식했다.
일단 API를 굳이 2번 호출하는 문제, 검색 한 번 할 때마다 화면을 여러 번 갱신, 자동완성 기능 구현 불가 등의 많은 문제가 있었다.
그래서 검색 후 다른 방법을 시도하였다.
두번 째 시도.
두번 째 방법은 textWatcher를 이용한 방법이었다.
textWatcher를 이용하여 글자를 검색하는 순간순간을 잡아서 API를 던지는 방법이었다.
그런데 해보니까 동작을 감지할 때마다 API를 못던지는 것이다. 속도가 느린건지 원래 못던지는건지 모르겠지만 근데 단순히 생각해봐도 API를 무슨 초단위로 계속던지는건 정말 못할 짓인것 같았다. 그래서 이 방법도 포기했다.
세번 째 시도.
세번 째 방법은 기존에 구현해 놓은 Recycler View를 필터링하는 방법이었다.
1. 국가목록 API를 통해 전체 목록 호출
2. Recycler View에 추가하여 구현
3. Search를 이용하여 item들을 필터링하여 자동완성.
세번 째 방법으로 하니 API를 한 번만 호출해도되고 검색도 깔끔하게 되었다. 너무 기분이 좋았다. 하하.
디자인은 추후에 다시 해야겠다. 암튼 기능은 구현완료하였다. 휴
'여행어플_프로젝트1' 카테고리의 다른 글
파트2. 페이지 레이아웃 (0) | 2021.08.08 |
---|---|
Android4.2 SHA-1키 찾기 (0) | 2021.07.21 |
파트1. Login (0) | 2021.07.20 |
DB (0) | 2021.06.30 |
figma (0) | 2021.06.30 |