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

예약시스템을 구현하고 있는데 예약 시 입력했던 정보를 recyclerview로 한번에 확인할 수 있게 하려면 어떤 방법이 좋을까요?

0 추천
액티비티 3개로 예약프로세스를 만들어보았고, 첫번째 액티비티는 calendarview를 통해 날짜를 받은 후 시간을 선택하고 두번째 액티비티는 요청사항을 입력받고, 세번째 액티비티는 각종 옵션등을 선택하는 과정으로 이뤄져있습니다. 이 과정이 끝나고 예약이 완료되면 바텀네비게이션으로 만든 메인페이지의 예약확인 프래그먼트에서 예약정보를 한번에 확인할 수 있게끔 recyclerview를 통해서 구현하고싶습니다. 저 3개의 액티비티에서 선택된 calendarview의 날짜정보와 선택한 시간, 예약자의 정보와 요청사항 등의 데이터를 받아서 어떤방법으로 저장하고 한번에 받아서 한페이지에 보여줄 수 있는지 궁금합니다..!

초보자로써 처음으로 구상하여 어플을 만들어보고있어서 매끈하지 않은 질문 죄송합니다. 방법이나 키워드, 사이트 어떤 방식으로든 알려주시면 감사히 공부해보겠습니다..!
wjdah (180 포인트) 님이 2022년 3월 2일 질문

1개의 답변

+1 추천
 
채택된 답변
말씀하신 경우는 하나의 기능을 여러 단계에 거쳐 처리하는 workflow에 해당합니다. 이런 경우는 각 단계를 그룹화시키는 것이 이체에도 맞고 구현하는데도 좀 더 적합할 듯합니다. 여기서 핵심 포인트 중의 하나는 각 단계에서 입력한 데이터를 한 곳에서 가지고 있다고 저장을 해야 하기 때문에, 이 부분을 잘 설계하시는게 중요해 보입니다.

먼저, 액티비티 3개를 사용한다면 (편의상 Activity1, Activity2, Activity3, Activity4으로 하죠), Activity1에서 Activity2를 startActivityForResult를 이용해서 Activity2에서 입력한 정보를 전달받고 같은 방법으로 Activity1에서 Activity3를 띄워 필요한 정보를 입력받으면 될 것 같습니다. Activity1이 Activity2와 Activity3에서 입력한 정보를 모두 보관해야 겠죠. Activity4도 마찬가지로 처리합니다.  Activity1에서는 입력한 데이터를 리사클러뷰를 통해 보여주면 될 것 같습니다.

Activity1 -> Activity2 -> Activity1 -> Activity3 -> Activity1 -> Activity4

아니면 Activity2 -> Activity3 -> Activity4 -> Activity1 순서로, Activity2에서 입력한 데이터를 intent를 통해 Activity3로, Activity2, 3에서 입력한 데이터를 Activity4로 Activity2, 3, 4에서 입력한 데이터를 Activity1으로 전달해 입력결과를 보여줄 수도 있는데 많이 복잡해지므로 별로 권장하고 싶지는 않습니다.

개인적으로는 액티비티를 사용하는 것보다는 하나의 흐름이므로 Activity + Fragment1 + Fragment2 + Fragment3 + Fragment4 가 좀 더 적합한 방법으로 보여집니다.  액티비티와 프레그먼트 간에 차이가 있긴 하지만 유저의 입력흐름으로 볼 때는 액티비티를 사용하는 것과 동일합니다. Fragment는 Activity안에서만 존재하며, Activity보다 가볍기도 하고 앞뒤의 이동에 대해 좀 더 유연한 처리가 가능합니다. ViewPager를 사용할 수도 있고 아니면 FragmentManager를 통해 Fragment를 단계에 맞게 replace해서 처리하면 될 것 같습니다. ViewModel를 사용한다면 구현이 좀 더 깔끔해 질 것 같은데, 그렇지 않더라도 앞에서 처럼 Activity에 Fragment에서 입력한 데이터를 보관하는 형태로 처리를 하면 될 것 같습니다.

첫번째 방법으로 하실 거면 startActivityrForResult와 setResult를 사용하시거나
https://developer.android.com/training/basics/intents/result 를 참조하셔서 다른 액티비티에서 결과값을 받는 방법을 공부하셔야 합니다.

두번째 방법은 Fragment 사용방법을 익히셔야 합니다. ResultAPI란 걸 찾아보시면 두번째 방법에 유용하게 써먹을 수 있습니다. https://developer.android.com/guide/fragments/communicate#fragment-result

Fragment를 사용하실거라면  Navigation Component와 같이 사용해서 Single Activity 앱을 만드시면 앱이 좀 더 빨라질 수 있고 Navigation 처리가 간단하게 될 수 있습니다.
spark (227,470 포인트) 님이 2022년 3월 2일 답변
wjdah님이 2022년 3월 3일 채택됨
레이아웃이 복잡하지 않다면 액티비티 하나에 ViewFlipper하나에 각 스텝에 해당하는 ViewGroup를 두고 를 이용해 해당 스텝에 해당하는 레이아웃만 보이게 해서 처리할 수도 있습니다.
그리고 사용자가 입력하고 있던 내용이 중간에 저장되어서 다음에 로그인했을 때 이전에 입력했던 내용부터 작업할 수 있게 하려면 파일이나 DB 또는 서버에 입력내용을 저장해 놓았다가 가져와서 보여주면 됩니다.
친절한 답변 감사합니다. 알려주신 방법 차근차근 다 공부해보겠습니다!
...