Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

경북대_Android_이혜원 1주차 과제 #3

Open
wants to merge 15 commits into
base: main
Choose a base branch
from

Conversation

heonniy
Copy link

@heonniy heonniy commented Jun 27, 2024

No description provided.

@heonniy heonniy changed the title 1. doc : readme 파일 추가 경북대_Android_이혜원 Jun 27, 2024
@heonniy heonniy changed the title 경북대_Android_이혜원 경북대_Android_이혜원 <step 1 - 연락처 추가> Jun 27, 2024
@heonniy
Copy link
Author

heonniy commented Jun 27, 2024

step1 : 연락처 추가 실행모습입니다! <gif 사진입니다>

ezgif-5-776eb4e558

Han961004 added a commit to Han961004/android-contacts that referenced this pull request Jun 27, 2024
@heonniy heonniy changed the title 경북대_Android_이혜원 <step 1 - 연락처 추가> 경북대_Android_이혜원 1주차 과제 Jun 28, 2024
@heonniy
Copy link
Author

heonniy commented Jun 28, 2024

step2 : 기능요구사항

  • 연락처 등록 화면을 구현한다.

  • 연락처를 저장하면 목록에 추가된다.

  • 저장된 연락처가 많을 경우 목록은 스크롤 되어야 한다.

  • 추가된 연락처를 선택하여 상세 화면을 볼 수 있다

  • 연락처 작성 중 뒤로가기 버튼을 누르면 확인 팝업이 나타난다.

  • 추가된 연락처는 앱을 다시 실행하면 유지되지 않는다.

조금 더 코드를 고친후에, 스크롤 구현을 해보겠습니다..

step2 : 실행화면 gif

@heonniy
Copy link
Author

heonniy commented Jun 28, 2024

<뒤로가기시 팝업창 뜨기 구현화면 입니다.!>

스크린샷 2024-06-28 오후 4 46 02

@heonniy heonniy mentioned this pull request Jun 28, 2024
6 tasks
Comment on lines +40 to +41
viewBinding = true
dataBinding = true
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

두개의 차이는 무엇이며, 두개를 왜 꼭 같이 써야할까요~?

Comment on lines +7 to +17
class ContactViewModel : ViewModel() {
val contactListLiveData = MutableLiveData<MutableList<contact>>().apply {
value = ContactList
}

fun addContact(contact: contact) {
ContactList.add(contact)
contactListLiveData.value = ContactList
Log.d("ContactViewModel", "Contact added: ${contact.name}, total contacts: ${ContactList.size}")
}
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MVVM은 안쓰기로 하지 않았나요~?

setContentView(binding.root)

// Intent로부터 데이터를 받아와서 UI에 설정
val name = intent.getStringExtra("name")
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

보통 이런 요소는 Constant라는 object를 파일단위로 생성하고
const val NAV_KEY_NAME= name" 을 변수로 세팅하여 사용합니다.
그리고 받는쪽에서도 이것을 사용하는거죠.

val phoneNumber = intent.getStringExtra("phoneNumber") ?: ""

if (name.isNotEmpty() && phoneNumber.isNotEmpty()) {
Log.d("ListActivity", "New contact: $name, $phoneNumber")
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

코드를 업로드하기전엔 로그를 되도록 지워주세요.

Comment on lines +19 to +26
val nameEdit: EditText = findViewById(R.id.NameEdit)
val phoneNumberEdit: EditText = findViewById(R.id.PhoneNumberEdit)
val moreText: TextView = findViewById(R.id.MoreText)
val birthEdit: EditText = findViewById(R.id.BirthEdit)
val memoEdit: EditText = findViewById(R.id.MemoEdit)
val genderArea: LinearLayoutCompat = findViewById(R.id.GenderArea)
val saveText: TextView = findViewById(R.id.SaveText)
val cancelText: TextView = findViewById(R.id.CancleText)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

메소드를 실행시킬때마다 비싼 xml 파싱을 통해 뷰를 탐색해내는 findViewBy 를 실행하는 것이 아닌,
액티비티가 열렸을때 one-time만 이것들을 호출하여 필드 인스턴스를 할당하고 그것을 계속 재사용하는게 성능측면에서 더 좋아보입니다.

android:layout_weight="3"
android:textAlignment="center"
android:textSize="20dp"
android:text="오른쪽 + 버튼을 클릭하여\n 연락처를 등록해보세요."
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

String은 추후에 영어등의 다른 언어로 번역해서 쓰일수있으니 strings.xml에서 관리하는게 어떨까요?

val phoneNumber = phoneNumberEdit.text.toString().trim()

if (name.isEmpty()) {
Toast.makeText(this@MainActivity, "이름은 필수값입니다.", Toast.LENGTH_SHORT).show()
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이런 String은 strings.xml에서 관리하는게 좋아보입니다.

Comment on lines +46 to +51
val intent = Intent(this, ListActivity::class.java).apply {
putExtra("name", name)
putExtra("phoneNumber", phoneNumber)
}
startActivity(intent)
finish()
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

navigateToContactListView() 이런 함수로 감싸는것도 좋아보이네요.

kold-brewed pushed a commit that referenced this pull request Jul 1, 2024
* Update README.md

* Update README.md

* [Feat] #1 - 기본 레이아웃 작성

* [Feat] #2 - 뷰 바인딩, 버튼 위치, 스크롤 뷰 적용

* [Feat] #3 - UI xml 마무리 및 생일 캘린더 적용

* [Feat] #4 - 2단계 연락처 목록 적용
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants