글
Google Places API가 주는 결과 중 하나인 리뷰는 사람들에게 특정한 곳에 대한 평가를 내리는 것이기 때문에, 나는 매우 중요시 여긴다.
그런데 결과를 가져올 때, 평점도 가져와야하는데 여러 기준이 있다.
overall(전체), food(맛), decor(인테리어), service(서비스), facilities(시설) 등 수많은 기준이 있다.
overall의 경우 문제가 될 것이 없다.
overall은 '전체' 기준이기 때문에 평점을 1개만 주면 되지만, 다른 기준으로 주면 3개를 주어야 한다. 예를 들어
food를 주면 decor과 service도 같이 평점을 줘야한다. 그렇게 설정되어 있다.
ex)
"aspects" : [ { "rating" : 2, "type" : "overall" } ]
overall(전체)는 한개만 주기 때문에 쉽게 가져올 수 있었다.
하지만 다른 기준으로 설정하면
"aspects" : [ { "rating" : 3, "type" : "food" }, { "rating" : 3, "type" : "decor" }, { "rating" : 3, "type" : "service" } ] 이런 경우 3개를 가져와야 한다.
진짜 문제는 overall과 다른 기준이 섞여 있는 경우다.
"reviews" : [ { "aspects" : [ { "rating" : 3, "type" : "overall" } ], "author_name" : "Google 사용자", "text" : "좋아요", "time" : 1322395747 }, { "aspects" : [ { "rating" : 0, "type" : "overall" } ], "author_name" : "Google 사용자", "text" : "안좋아요.", "time" : 1306676342 }, { "aspects" : [ { "rating" : 3, "type" : "overall" } ], "author_name" : "Google 사용자", "text" : "매우 좋아요.", "time" : 1323514896 }, { "aspects" : [ { "rating" : 3, "type" : "food" }, { "rating" : 3, "type" : "decor" }, { "rating" : 3, "type" : "service" } ], "author_name" : "James Yang", "author_url" : "https://plus.google.com/104680883154257434480", "text" : "모든 것이 다 좋아요.", "time" : 1349590648 } ]
이런 경우를 ArrayList로 저장하면 이렇게 된다.
ArrayList rating = {3,0,3,3,3,3}
ArrayList author_name = {Google 사용자,Google 사용자,Google 사용자,James Yang}
Google 사용자들은 overall로 평점을 주었기 때문에, 한개만 결과를 준다.
하지만 James Yang의 경우 food, decor, service를 주었기 때문에 결과를 3개나 준다.
for(int i=0; i<author_name.size(); i++){
System.out.println(author_name.get(i)+"\n"+rating.get(i));
}
이렇게 되면 rating의 결과는 이렇게 출력된다. 3,0,3,3 // 뒤에 3,3이 빠짐
for(int i=0; i<rating.size(); i++){
System.out.println(author_name.get(i)+"\n"+rating.get(i));
}
이렇게 하면 또 오류가 발생한다. 6개를 출력해야 하는데 author_name은 4개밖에 없기 때문이다.
이제 해결책을 찾아보자.
일단 overall은 무시하자 문제는 food같은 3개를 주어야하는 평점기준들이다.
다행힌 점은 food, decor, service 3개를 주면 food가 무조건 먼저 나오기 때문에
가져올 때 type이 food인지 아닌지 확인해주면 된다.
food이면 food와 그 뒤에 있는 decor와 service를 하나의 변수에 저장하면 된다.
그러면 1개가 되기 때문에 제대로 출력이 된다.
3개 묶음
appeal, facilities, service
quality, appeal, service
food, decor, service
.....
이 저작물은 크리에이티브 커먼즈 저작자표시-비영리-변경금지 4.0 국제 라이선스에 따라 이용할 수 있습니다.
'Android > Tips' 카테고리의 다른 글
Navigation Drawer 분석 (1) | 2013.11.13 |
---|---|
커스텀 리스트뷰에서 클릭시 클릭된 아이템 배경 색 설정 (1) | 2012.10.15 |
커스텀 리스트뷰 만들기 (0) | 2012.10.14 |
안드로이드 다중 replace 사용 (0) | 2012.10.10 |
Android MapView(InflateException) 오류에 관해... (0) | 2012.10.06 |
RECENT COMMENT