돌아오신것을 환영합니다
이번 영상에서는 쇼핑리스트 아이템과 쇼핑 아이템의 형태를 살펴보겠습니다
ㅤ
그러니까 형태를 조금 편집하는것입니다
제가 녹화중에 무슨일이 일어났는지 조금 말씀해드리겠습니다
오늘 이 챕터랑 코딩이랑 다 녹화하고 있었는데
갑자기 IDE랑, IDE관련 프로그램이랑 AVD에서 실행중이던 앱이 다 크래시 되고
아무것도 작동되지 않았습니다
그래서 에뮬레이터 데이터 다 지우고
다시 시잘했는데 갑자기 저의 PC가 멈췄습니다
전부다 멈췄습니다 저 컴퓨터 장비들 굉장히 좋은것인대도 말입니다
그래서 기존에뮬레이터는 아예 다 지워야 했고
새로 만들었습니다
그래서 지금은 제 앱이 지난번 상태랑 똑같이 실행되고 있습니다
이제 여기 밑부분에 버튼을 추가하고싶습니다
버튼을 누르면 구글 지도를 열게 하는것이죠
다시 말해 지금까지 작업한것을 여는것입니다
여기 Kotlin 안에 있는 locationSelectionScreen이 열려야합니다
열리게 하려면 그 전에 모든것을 준비해 놔야 하니
지금 작업을 해 보겠습니다
ShoppingList 파일로 가보겠습니다
여기 ShoppingItem에 네가지 매개변수가 있었습니다
여기에 다섯번째를 추가하겠습니다
지금은 ID, name, quantity(갯수) 그리고 지금 편집 중인지 아닌지에 대한것이 있습니다
여기에 주소에 대한 기능도 추가하겠습니다
해당 아이템을 어디서 구매해야 하는지에 대한 정보를 얻고싶습니다
좋아요
여기에 그것을 추가합니다
그리고 쇼핑리스트 안 항목의 모습도 바꾸고 싶습니다
ㅤ
개별항목마다 지금은 row가 있고 텍스트, 또 다른 텍스트 그리고 또 다른 row가 있고
아이콘 버튼 옆 또 다른 아이콘 버튼이 있습니다
제가 하고싶은것은
여기있는
이것을
봅시다
어떤것이냐면
여기 이 두가지 text들을 Column으로 넣고
또 row로 넣고싶습니다
여기에서는 modifier = modifier. 을 하고
여기 다시한번 weight(1f) 프로퍼티를 사용하고 padding도 조금
8 dp 정도로 줍니다
그리고 거기에 Row를 추가하고 싶습니다
그리고 row에는 이 두가지 text를 추가할것입니다
ㅤ
저는 이 두 텍스트가 어느정도 중요성을 가지라고 하는것입니다
차지하는 공간 측면에서요
이 weight(1f)으로 이 텍스트에게 우선순위를 주는 것입니다 만약 weight가 없었다면
이것은
사용하고 남은 공간정도를 차지하게 됩니다
그러니까 여기 두개의 버튼이 있는 Row는 남은공간에 자리잡게 될것입니다
여기에 Row를 한개 더
추가하겠습니다
Column 안이고
이 row 밑으로
새로운 row를 추가합니다
이번엔 modifier을 추가하고
Modifier.fillMaxWidth라고 합니다
이 Row에 icon도 추가하고 imageVector = Icons.Default.
.LocationOn 그리고 contentDescription은 null로 합니다
그리고 Text를 추가하여 주소지를 표시하게 합니다
Text = item.address 입니다
이 아이템이 뭐냐하면
이 item을 여기 name과 quantity에도 사용했고
이제는 방금 설정한 주소에도 사용하는것 입니다
쇼핑 아이템에 주소가 있어야 한다고 했고
이제 여기에 주소를 표시하는것 입니다
어떻게 하면 좋게 보이게 만들지 고민했다가
이것을 우리가 만든것입니다
여기 Column에는 기존 Row와 Text들이 있고
밑에 또 다른 Row에는 imageVector이 있습니다 이것은
작은 onLocation 이미지 일 것입니다
그리고 주소지를 보여주는 텍스트도 있습니다
좋아요
이제 파일 윗부분으로 올라와서 쇼핑리스트 앱을 업데이트 하겠습니다
이 쇼핑리스트 앱은
아직은 매개변수같은 속성이 필요하지 않았습니다
여기 매개변수를 패스할 일이 없었습니다
그것을 바꾸겠습니다
여기에 LocationUtils를 사용해서
viewModel을 패스하겠습니다
navController도 패스하고 context 타입의 context도
추가합니다
마지막으로 string 타입의 address도 추가합니다
이렇게 context를 import 시킵니다
쇼핑리트스 앱에서 권한요청을 필요로 하기 때문에 이제
쇼핑리스트 앱을 사용하려면 이 모든 정보를 패스 해야 합니다
사용자의 GPS 접근에 대한 위치 권한과
이전에 설정했던 뷰 모델도 사용해야 하고 이것은 location을 관리해줍니다
NavController은 다양한 화면과 컴포저블 사이간 이동할수있게
도와주고
그리고 context는 일반적으로 권한을 요청할때나
새화면을 표시하고싶을때 혹은 navController을 사용할때 항상 필요합니다
그리고 마지막으로 address를 패스합니다
이것이 지금 시점의 쇼핑리스트 앱입니다
그리고 이번영상에선 이것으로 충분합니다
보시면 여기서는 이제 쇼핑리스트 앱을 시작하실수 없습니다
이건 우리가 모든 정보와 세부사항을 패스하지 않았기 때문입니다
따라서 여기 MainActivity와 NavController안에
셋업 시켜야 합니다
그것이 모두 필요할것입니다
하지만 다음 영상에서는 우선 권한 요청 런처를 관리하겠습니다
이전에 했던것인데 그것을 우리 프로젝트에 적용시켜보겠습니다