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

XML을 조금만 바꿔도 코드의 방향이 완전 바뀌어버리기도 하네요..

0 추천

 

사진은 RecyclerView의 아이템인데 메인 리사이클러뷰 아이템이라 칭하겠습니다.

사진의 메인아이템처럼 CardView로 이루어진 아이템 속에 RecyclerView를 넣었습니다.

서브 리사이클러뷰 및 아이템이라 칭하겠습니다.

기능은 동적으로 메인 리사이클러뷰 아이템을 생성/삭제할 수도 있고 생성된 메인아이템에서

서브아이템을 동적으로 추가/삭제 할 수 잇는 기능입니다.

 

원래는 CardView 없이 그냥 메인 아이템과 서브아이템으로 리사이클러뷰를 구성했습니다.

하나의 리사이클러뷰에 두개의 아이템을 사용하려하니 getViewType 및 Any 타입으로

구현을 하면 돼서 큰 문제는 없었는데

 

메인 아이템간 구분을 주고싶어서 CardView를 썻더니 서브아이템이 반드시 이 CardView안으로

들어가야하다보니 어댑터를 두개써야하는 상황이 발생할것 같습니다.

적어도 제 수준에서 생각하기에는요.

 

즉 메인어댑터에서 이 서브어댑터를 초기화 하는 상황이 발생하는데..

이게 맞는 방법이고 좋은 방법인지 모르겠네요.

 

그래서 기존에 구현했던 Any타입이나 getViewType같은것을 완전히 바꿔서 진행해야할것같은데요.

아이템에 CardView만 추가했을뿐인데 이런상황이 생겨서 당황스럽네요..

 

맞는 방법일까요?

 

codeslave (3,940 포인트) 님이 2021년 7월 20일 질문
어댑터가 두개 nested 구조로 들어가게 되는 것은 다시 고래해야 봘 상황입니다.
CardView대신에 RelativeLayout이나 ConstraintLayout 같은 거를 하나 사용하시고 백그라운드에 elevation효과를 주시면 될 것 같은데요.
그리고 아이템간 구분을 주기위한 용도라면 RecyclerView의 아이템에 CardView 를 사용하시는 방법도 생각해 보세요.
정확하게 이해가 가지않네요. 본문의 사진이 RecyclerView의 아이템인데 여기다가 CardView를 사용하라는것이 무슨 말씀인지 모르겠어요. 또한 CardView대신
RelativeLayout이나 Constraint 또한 사용해도 결국은 내부에 서브RecyclerView아이템을 추가해야하는거라 똑같지 않나요..?
질문과는 약간 다른 방향이긴 한데 제가 보기에는 모바일에 구현이 가능하긴 한데, 해당화면은 사실 모바일에서 구현하는데는 조금 벅찬 화면입니다. 한 화면에서 상당히 많은 일을 하고 스크롤, 중첩 리사이클러뷰같은 안드로이드 플랫폼의 지원이 취약한 부분을 건드리게 되므로 개발이 간단하지는 않습니다. 개인적으로 추천하는 것은 디자인이 회사의 강력한 요구사항이 아니면, 먼저 최대한 단순화시켜서 만드신 다음 이 기능이 잘 동작한 다음에 다음 기능을 추가하는 형태로 개발하는 것이 좋습니다. ToDoList 앱 같은 걸 보시면 사용자 입력을 받아서 리스트에 추가하는 형태로  먼저 구현을 하시고, 이 기능이 잘 처리되면 다음 단계를 더해 보세요. 입력용 화면 조회용 화면을 별도로 구분하는 것도 하나의 방법이구요.
님의 디자인은 생각보다 고려해야 할 요소도 많고 님이 상황에 맞는 화면이기 때문에, 사실 직접 테스트해 보지 않고는 머릿 속에서 뭐가 되고 뭐가 안된다가 쉽게 확인되지가 않아요.
충고감사합니다. 제가 실력에비해 너무 무리한걸 구현하려나보네요..ㅋㅋ 감사합니다!
님의 실력과 상관없이 아주 숙련된 개발자들도 위와 같은 화면 구현에는 시간이 꽤 걸려요. 화면 자체가 웹 같은데는 적합한데, 모바일에는 좀 부적합하다고 해야 할까요... 모발일은 모바일 나름의 UI패턴이 존재합니다. 구글의 Material Design과 Apple의  Human Interface가 좋은 예이구요. 모바일 앱에서는 좀 더 모발이 다운 UI를 구현해야 골치가 아프지 않습니다.

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...