코딩슬레이브
369
2021-02-08 03:27:13
2
338

안드로이드) 이 앱의 화면을 어떻게 구성하면 좋을까요?







사진은 번핏이라는 앱의 화면을 제가 움짤을 따왔습니다.

저도 운동일지 앱을 만들고 있는데..

사진의 화면처럼 각 운동 종목별로 세트추가/삭제가 있습니다. 이 운동 종목은 버튼을 통해

새로 추가할 수 있습니다.

운동종목 또한 버튼을 누르면 해당 운동의 세트가 추가삭제가 됩니다.


저는 처음에 이러한 구성을 해야겠다라고 생각 했을때


운동종목에 대한 리사이클러뷰에다가 각 운동종목은 운동상세(세트, 무게, 횟수)를 

버튼을 누를때마다 추가하니까 리사이클러뷰 내에 리사이클러뷰, 


즉 중첩 리사이클러뷰를 해야겠다고 생각했습니다..

그런데 지금 구현을 했는데..스택오버플로우나 다른 글에서나 중첩리사이클러뷰는

별로 비추천한다고 하더라구요.. 어렵기도 하고 나중에 문제가 될 수 있다고..

(자세히 뭐가 문제인지는 모르겠습니다)


게다가 저것뿐만 아니라 리사이클러뷰의 아이템삭제에 notifyData~~ 메소드를 쓰지않고

DiffUtil 클래스를 사용하여 업데이트하는데 바깥 리사이클러뷰에 대한 업데이트.


그러니까 운동 종목에 대한 DiffUtil까지는 성공적으로 구현했으나

안쪽 상세 아이템에 관해 DiffUtil을 구현해서 하니 데이터가 이상하게 변하는 문제가 발생했습니다.


디버깅해도 값은 제대로 들어있는데 뭐가 문제인지도 모르겠고 해서...도저히 답답해서

여쭈어봅니다...중첩 리사이클러뷰는 포기하고 다른 방법이 있나 궁금합니다..


리사이클러뷰 하나만으로도 구성을 할 수 있는지 등...선생님들이라면 어떻게 하실껀가요?


0
  • 답변 2

  • p2c2kbf
    158
    2021-02-08 08:53:13

    동적으로 뷰를 생성해서 추가하는 방법이 있습니다.

    추가할 뷰를 미리 xml에 정의해서  layoutInflater.inflate 함수를 통해서 해당 뷰를 생성하여

    addview 하시면 추가 가능합니다.

  • 코딩슬레이브
    369
    2021-02-09 00:13:02 작성 2021-02-09 01:16:10 수정됨

    감사합니다 선생님..

    그런데 선생님이라면 어떻게 구성하실건가요..?

    중첩리사이클러뷰를 사용해서 구성을 하기는 했는데.. 아이템 업데이트에 효율적이라는

    DiffUtil에서 원인도 모른채 막혀버리니 이게 맞나 싶어 여쭈어봅니다..


    선생님이라도 리사이클러뷰를 하나만 사용하실건가요?



    -----


    + 선생님이 addView라는걸 가르쳐주셔서 알아보는데 스택오버플로우에서 

    일반적으로 레이아웃에서 뷰를 추가하려면 addVIew를 사용해야하는데 ViewHolder에서 그렇게하면

    리사이클러뷰에서 어댑터의 다른 아이템을 바인딩하는데 재사용 되므로 사용할수? 없다..

    추가하려는 뷰가 뷰홀더 인스턴스에 다시 바인딩될때 나타난다 어쩌고 이러던데.. 맞나요?ㅠ


    android - Add a view dynamically to the item of the RecyclerView - Stack Overflow)

  • 로그인을 하시면 답변을 등록할 수 있습니다.