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

api값을 필터링?해서 받아올 수 있을까요?

0 추천

공공데이터 포털에서 제공하는 api를 사용하여 어플을 개발중인 학생입니다

저는 검색창에 도시이름을 검색하면 검색한 도시의 정보만을 불러오게 하려 했는데 api링크 자체가 한번에 모든 도시의

정보를 불러옵니다ㅠㅠ 무언가를 추가해도 무조건 모든 도시를 불러오는데 이런 경우 필터링이나 링크 수정으로 검색한 도시의 정보만을 불러올 수 있을까요?

혹시몰라 링크와 문서 첨부합니다

http://openapi.data.go.kr/openapi/service/rest/Covid19/getCovid19SidoInfStateJson?serviceKey=서비스키는 지웠습니다&pageNo=1&numOfRows=2    ->api링크

 

당당 (810 포인트) 님이 2020년 12월 6일 질문

1개의 답변

0 추천
 
채택된 답변
API 만 봐서는 파라미터가 없으니, 일단 다 받아야겠네요.
페이징이 없을 때까지 다 받는데,
json으로 답변이 온다면,

추천은
1. 통신단,
retrofit2를 사용해서,
Class 의 List<> 형태로 받아야죠.
통신에서 받은 List<>를
최종 List로 Add하고,
다시 서버에 통신해서 페이징이 끝날 때까지
최종 List에 Add 하고, (이때 해당 시도만 add하게 만들어도 되겠죠.)

2. UI 단
어차피 표시는 recyclerview에 adapter를 구현하는게 보통이니
그때, 해당 검색의 시도만 추가하는 형태로 하면 될 듯 싶네요.

p.s.
주의 사항: retrofit2에 맞추어 통신단을 구현하려면 통신부분을 다 수정해야 합니다.
최초 테스트 앱을 만들어서 구현하는데 하루 또는 사람에 따라 일주일이 걸릴 수도 있습니다.
자바를 잘 모른다면 더 걸릴 수도 있겠죠.
통신이나 UI의 Callback Interface를 군데군데 잘 추가할 실력이 된다면 빨리 할 수도 ...
나중에 이것 때문에 시간만 잡아 먹었다고 할 수 있으므로,
후회하지 않을 자신이 있다면 해보세요.

기타:
list의 sort기능을 사용할 수도 있으나 크게 장점은 없어보이네요.
(커스톰 비교 함수를 만들어야 해서, 같은 시도를 높은값으로 잡아주면 되는데
retrofit도 배워야 한다면 굳이 sort까지 공부할 필요는 없을 듯 싶네요.)
Will Kim (43,170 포인트) 님이 2020년 12월 7일 답변
당당님이 2020년 12월 7일 채택됨
xml방식인데 검색해보니 xml도 retrofit2가 되는거 같네요
한번 시도해봐야겠네요 자세한 설명과 조언 감사드립니다!
https://www.youtube.com/watch?v=JouXzfBuOA8

음 저도 신청해 봤는데 XML로 떨어지네요.

이거 참고하시면 될 것 같아요.

건수가 많아서 호출이 많이지겠네요.
12월 7일 과 8일 이틀간만 해도
5481건이네요.

<totalCount>5481</totalCount>
영상추천 감사합니다! 한번 바로 시도해볼게요
혹시 괜찮으시다면 질문 한가지 더 해도 괜찮을까요,,?
api를 검색해서 해당 도시만 받아온다고 했는데 검색기능 구현을 search view로 해놨는데
(아직 기능은 못 넣었습니다) 검색해보니 EditText로 구현을 더 많이 하고 searchview는
검색기능을 툴바에- 넣을 때 사용하는 거같아서 혹시 요즘은 검색기능을 구현시에 둘 중에
무엇을 더 선호하여 개발하는지 알 수 있을까요?
searchview가 좋죠.
searchview로 할 때도 위의 로직을 Adapter 안에서
해당 override 메소드에 구현하는 것입니다.
SearchView가 대신 해 주는 것은 없습니다.
다만, 키워드 입력을 하는 와중에 실시간 처럼
검색 결과를 자동으로 다시 뿌려준다는 기능이 있는 것이죠.

이때 주의해야 하는 부분은
1. 전체를 다 읽어와서 searchview의 검색어를 적용해야 하느냐? 아니면 부분만 가져오고 풀업 리프레쉬로 계속 가져올 수 있게 해서, 가져온 것 안에서만 검색어를 적용할 것이냐를 기획적인 관점에서 정리하고 개발해야 할 겁니다. 어느 쪽이 맞다 아니다가 아니라, 기획에 의해 어느 쪽이던 맞을 수 있기 때문입니다.
2. 검색어가 포함된 내용이 적을 경우엔 더 가져와서 한페이지 채운다고 하면 좀 더 복잡해 지는 로직이 되겠죠.

가장 심플하게 다 가져와서 필터링한다면,
API 호출횟수가 늘어나는 단점이 있습니다.

또한 필터 기능을 커스토마이징해서 전체 필드가 아닌
필드를 여러개를 필터링 할 수도 있겠죠.
지역 필터, 기관 필더를 구분할 수도 있겠죠.

기능적인 부분은 아래를 참고하세요.
https://www.youtube.com/watch?v=sJ-Z9G0SDhc&list=LL&index=4&t=296s
단순하게 생각하고 있었는데 생각보다 까다로운 문제였네요
어떤 방향으로 구현을 할지 다시 한번 생각해봐야겠어요
꼼꼼하게 답변 해주셔서 정말 감사드립니다
영상 참고하겠습니다!
...