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

손영준 Assignment3 제출 #64

Open
wants to merge 4 commits into
base: assignment3
Choose a base branch
from

Conversation

glenn-syj
Copy link

최소 스펙 완료했습니다.
모범 답안이 나오기 전까지 추가 스펙, 챌린지 스펙 + 디자인에 도전해보겠습니다.

Copy link
Collaborator

@JuTaK97 JuTaK97 left a comment

Choose a reason for hiding this comment

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

수고하셨습니다. 꼼꼼한 구현 🥇

챌린지 스펙 내용 관련해서는 코멘트를 확인해 주세요!

Comment on lines +36 to +42
override fun onItemClick(itemId: Int) {
// 클릭한 아이템의 ID를 사용하여 필요한 동작 수행
// 예: 상세 화면으로 전환하면서 ID를 전달
val intent = Intent(this, DetailActivity::class.java)
intent.putExtra("itemId", itemId)
startActivity(intent)
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

인터페이스 👍
하지만 어댑터에게 람다를 전달하는 방법으로 더 간단하게 구현할 수 있습니다.

viewModel.wordListInfoData.observe(this@MainActivity) { wordListInfo ->
// LiveData를 관찰하여 데이터를 얻고, adapter를 업데이트
Log.d("DetailActivity", "Word list size: ${wordListInfo.size}") // 디버그 로그 추가
adapter.setItems(wordListInfo)
Copy link
Collaborator

Choose a reason for hiding this comment

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

👍

Comment on lines +50 to +52
val fetchedList: Pair<MainRepository.Signs, Any?> = repository.getWordListInfo()
val sign = fetchedList.first
val responseValue = fetchedList.second
Copy link
Collaborator

Choose a reason for hiding this comment

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

꿀팁)
val (sign, responseValue) = repository.getWordListInfo()

Comment on lines +10 to +14
enum class Signs {
SUCCESS,
FAILURE,
EXCEPTION
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

이렇게 별도로 래핑하는 구조도 나쁘지 않아 보이지만 일반적인 방식은 아닙니다.
왜냐면 굳이 sign을 Pair로 붙여서 return하지 않더라도, Exception이 발생하지 않았으면면 SUCCESS이고 Exception이 발생했으면 FAILURE 또는 EXCEPTION 라고 알 수 있기 때문이죠. 그리고 Exception의 type을 통해 FAILURE(40X, 50X를 의미하신 거겠죠?)과 EXCEPTION도 구분할 수 있습니다.


suspend fun verifyPassword(id: Int, password: String): Pair<Signs, Any?> {
return proceedException(api.verifyPermission(id, MyData.PasswordJSON(password)))
// 왜 잘못 입력했는데 200이 뜨지...
Copy link
Collaborator

Choose a reason for hiding this comment

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

서버구현이슈 가능성도 있습니다 🤣

Copy link
Collaborator

Choose a reason for hiding this comment

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

dagger hilt로 Repository는 보통 이런 식으로 만듭니다.
https://stackoverflow.com/questions/64820394/using-dagger-hilt-in-repository-class

android:id="@+id/input_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"
Copy link
Collaborator

Choose a reason for hiding this comment

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

섬세함 💯

Comment on lines +109 to +111
if (result != "SUCCESS") {
Toast.makeText(this@DetailActivity, result, Toast.LENGTH_SHORT).show()
}
Copy link
Collaborator

Choose a reason for hiding this comment

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

여기서 return 해야되지 않나요? ㅎㅎ

Comment on lines +112 to +114
// 요청 성공 시 메인화면으로 <- 요청 성공/실패 체크]
val intent = Intent(this@DetailActivity, MainActivity::class.java)
startActivity(intent)
Copy link
Collaborator

Choose a reason for hiding this comment

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

이렇게 하면 메인화면으로 "되돌아가는 것" 이 아니라, MainActivity화면을 새로 만들어서 위에 쌓는 구조가 됩니다. (단어장 삭제하고 나서 뒤로가기를 눌러보면, 스택처럼 두 개의 MainActivity가 쌓여있는 것을 볼 수 있습니다)

그래서 삭제를 했을 때 MainActivity가 그걸 activityResultListener로 전달받은 게 아니라 (챌린지 스펙의 내용), 그냥 새 MainActivitty가 떠서 다시 fetch list를 한 상황입니다.



}
// Dialog abstract class를 만들어도 될듯...? itemId와 Binding 받아서...
Copy link
Collaborator

Choose a reason for hiding this comment

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

좋은 생각입니다

Dialog를 상속해서 자신의 앱에서 쭉 사용할 커스텀 다이얼로그를 만들어서 사용하는 게 일반적입니다. 레이아웃을 설정하고, 등장/퇴장 및 애니메이션까지 커스텀해서 사용하면 편하죠

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants