본문 바로가기
안드로이드 개발/📱 카드매니저 (가칭)

230325 카드매니저 개발 일지

by 아이엔 / ienground 2023. 3. 25.

오늘은 새로운 카드를 추가하는 액티비티 작업을 진행했다.

현재는 로그인 창 이후, 메인 액티비티가 실행되고 이때 owned_contents와 shared_contents가 둘 다 empty일 때 새로운 카드에 대한 정보를 입력하는 창을 띄우게 하는 것이다.

 

먼저 Firestore에 있는 데이터 구조를 다시 변경했다.

먼저 원래 컬렉션이 data, user로 나뉘어 있었는데 data 내에서 다시 각 user별로 나누어진 후 data가 있었는데 shared_contents를 통해 id로 data에 접근하는 경우 그 data가 누구의 user인지를 안 이후 접근이 가능하여 데이터 접근에 좀 제한이 된다. 그래서 data에는 바로 개별 card 정보가 있게 될 것이다.

card 정보에는 원래 정보인 카드 이름, 목표금액, 메모, 공유된 사용자 이외에도 / 카드 사진 (사용자 업로드 가능), 2,3차 목표금액 등 array, 실적 초기화 일자, owner도 추가로 들어갈 예정이다.

user 정보에는 email, owned_contents, shared_contents가 들어갈 예정이다. 당연히 owned_contents에는 유저가 소유하고 있는 card, shared_contents에는 공유받은 card가 array에 들어간다. 

 

그러고보니 owned_users는 따로 있을 필요가 없겠군.

사진은 Firebase Storage로 구현된다. 그래서 여기에 저장하고 그 파일명 (UUID)을 firestore db에 저장하면서 불러올 수 있게 할 것이다. 업로드는 구현했고 db올리는 건 Card Edit Activity 구현 이후에 할 것 같다.

 

목표금액, 공유된 사용자에 대한 정보를 array로 받아야 하는데 그와 동시에 삭제가 용이하고, 구분되게 하기 위해서 edittext + chip 구조를 사용했다. 이에 대한 코드를 구글링했는데 도움이 되는 자료는 분명 있었으나 내가 원하는 대로 구현이 되는 코드는 결국 찾지 못해 조금씩 바꿔서 원하는 대로 바꾸었다.

1. 엔터가 입력되면 새로운 칩이 완성되고

2. 숫자의 경우 포매팅이 되고 (이건 쉬움)

3. 빈 상태에서 백스페이스가 들어갈 경우 마지막 칩을 삭제하고

4. 숫자의 경우 정렬까지!

5. 각각이 삭제될 수 있게 close 버튼까지

 

에서 4, 5는 내일 구현해야 한다. 이것에 대한 코드는 나중에 따로 글을 다시 올리겠다.

생각보다 까다로울 줄 알았는데 의외로 간단했고, 이 정보를 저장 버튼을 통해 /data에 업로드하면 이후에는 그 카드에 대한 정보가 메인액티비티에 뜨게 할 것이다.

 

이걸 엑셀이라는 틀로 유지했으면 못할 뻔했다. 후..