먼저 요구사항입니다.

 

 

앞서 만들었던 '작성하기'와 '모두보기'을 기억하시나요? PJT2에서는 해당 버튼을 눌렀을 때

 

토스트 메세지로 버튼을 눌렀을 경우를 간단히 표시만 해주었습니다.

 

이번 프로젝트의 목표는 토스트 메세지가 아니라 실제로 버튼을 눌렀을 때 해당 화면으로 이동하는 거죠.

 

간단히 말하면, 해당 버튼에 대한 화면을 만들고 이동하는 기능을 구현하면 됩니다.

 

 

제가 만든 화면을 보고 얘기하죠.

 

작성하기 화면
모두보기 화면

 

두 화면은 모두 Activity로 만들었고 크게 복잡한 구성은 없습니다.

 

솔직히 그냥 보면, 엄청 간단해 보이죠? 그런데 여기에는 함정이 있습니다.

 

요구사항만 보고 단순하게 생각하면 빠지기 쉬운 함정이죠.

 

 

일단 작성하기 화면은 말 그대로 댓글을 작성하는 화면입니다.

 

코멘트와 별점을 입력하면 그걸 기록해야 한다는 의미죠.

 

모두보기 화면은 그 댓글들을 모두 보여줍니다. 또한 작성하기 화면으로 이동할 수도 있죠.

 

감이 오시나요?

 

 

맞습니다. 이번 프로젝트에서 제가 가장 시간을 쏟은 부분이 바로 '데이터 전달과 기록'입니다.

 

아직 데이터베이스를 사용하지 않는 부분이라 상당히 많이 고민한 부분입니다. 솔직히 데이터에 관련된 세부적인 사항들에 대해서는 데이터베이스를 배울 때 구성해도 되지 않을까 했지만...

 

공부하자는 생각으로 일단 구현하기로 했습니다 ㅋ

 

 

 

1) 메인 화면에서 작성하기 화면으로 전환

 

Intent와 startActivityForResult 메소드를 이용하여 전환하면 간단합니다.

 

 

2) 작성하기 화면에서 댓글과 별점을 결정 + 그 댓글을 메인 화면과 모두보기 화면으로 전달, 기록

 

Intent에 작성시간, 코멘트, 별점을 name을 지정해서 저장한 이후 그 Intent를 메인 화면, 혹은 모두보기 화면으로 전달

 

Intent를 통해 데이터를 전달 받은 각 화면들은 제가 만든 setNewCommentData 메소드를 통해 기록됩니다.

 

(이 과정에서 Bundle과 Parcelable이 활용됩니다. 코드를 올려드리고 싶은데 규정 때문에 올릴 수가 없네요.)

 

 

3) 메인 화면에서 모두보기 화면으로 전달

 

메인 화면의 코멘트 리스트의 데이터들을 Parcelable로 묶어서 전달하고 그걸 풀어서 코멘트 리스트를 만듭니다.

 

 

4) 모두보기 화면에서 작성하기 화면 전환 + 새로운 댓글 기록

 

화면 전환은 이전과 다르지 않습니다. 다만 작성하기 화면에서 데서 뒤로 돌아올 때 메인 화면이 아니라 모두보기 화면으로 전환되도록 해야 합니다.

 

 

5) 모두보기 화면에서 메인 화면

 

만약 모두보기 화면에서 작성하기를 통해 새로운 코멘트가 기록되었다면(if를 이용), 그 기록을 전달하여 메인 화면의 코멘트 리스트를 갱신했습니다.

 

 

 

이것도 꽤 오래 전에 했던 거라 그때 데이터 부분에서 엄청 고생했던 기억이 나네요. 여기서 핵심적이라 느낀 부분은 Bundle과 Parcelable을 이용했던 것입니다. 둘 다 데이터 전달에 있어서 자주 사용되는 거 같은데요...(맞나?) 다시 복습을 할 필요성이 느껴지네요.

 

저는 이외에도 새로운 코멘트가 추가될 때마다 평점의 평균까지 갱신해주었는데요. 별이 다섯 개라서 5점으로 계산했다가 10점 만점인 것을 보고 다시 했었습니다 ㅋ

 

만약 평점을 갱신하고 싶으시다면, ratingbar에서 받아온 숫자는 int가 아닌 float라는 걸 유의하시길 바랍니다. (그래서 그냥 평균을 계산하면 이상한 값이 나와요.)

 

 

제출한 결과를 한 번 볼까요?

 

 

마이너한 이슈들은 주로 가독성과 관련된 사항들이거나 사소하다고 느껴지는 것들이었는데,

 

리뷰어님께서 사소한 것까지 빠지지 않고 봐주셨습니다.

 

예를 들면

 

이런 꿀 같은 충고와 함께

 

잘한 점들은 칭찬도 해주십니다 ㅋㅋ (뿌듯)

 

 

 

이상으로 PTJ3 리뷰 끝내겠습니다~!

+ Recent posts