-
Notifications
You must be signed in to change notification settings - Fork 33
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_김정희_2주차 과제_2단계 #52
base: lovelhee
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM~ @lovelhee 2주차 과제 늦게 확인했네요.
이미 채점은 완료해서 코멘트들은 참고만 해주세요. 고생많으셨습니다.
private fun dataExists(tableName: String, name: String): Boolean { | ||
val db = readableDatabase | ||
val query = "SELECT 1 FROM $tableName WHERE ${MapContract.COLUMN_NAME} = ?" | ||
val cursor = db.rawQuery(query, arrayOf(name)) | ||
val exists = cursor.moveToFirst() | ||
cursor.close() | ||
return exists | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 쿼리로 데이터 존재여부를 알수있다면 괜찮습니다.
SELECT EXISTS ...
문법도 있었던것 같네요. 차이점이 있는지 조사해보시고, EXISTS를 명시적으로 사용하는것도 괜찮을것 같습니다.
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { | ||
val keyword = s.toString() | ||
if (keyword.isNotEmpty()) { | ||
mapViewModel.searchPlaces(keyword) | ||
} else { | ||
searchResultAdapter.submitList(emptyList()) | ||
tvNoResults.visibility = TextView.VISIBLE | ||
rvSearchResult.visibility = RecyclerView.GONE | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
검색어를 실시간으로 입력하다보면 앱이 약간 지연되는 현상이 발생하곤 하던데, 이런 경우 어떤 식으로 문제를 해결하는 것이 좋을까요? (혹시.. 저의 안드로이드스튜디오에서만 생기는 문제일 수도 있습니다..)
지금은 앞서가는 내용이지만, UI 클릭/이벤트를 다룰때 debounce
or throttle
라는 개념이 있습니다.
쉽게말해 몇초이내 동일한 이벤트가 재호출되면, 마지막 호출만 유효하게 처리한다.
라는것인데요. 검색어 입력시 호출되는 메소드에 적용해보면 좋을것 같습니다.
지금은 검색어를 입력할때마다 DB를 조회하게 되는데요.
짧은 시간에 과도한 호출이 발생하면 버벅이는 현상이 생길 수 있을것 같습니다.
또 다르게는 쓰레드 / 코루틴 같이 비동기로 처리할 수 있는 방법들을 사용하는것도 도움이 될것 같습니다.
코루틴은 지금 바로 사용하기엔 커리큘럼상 적합하지 않을수있으니 키워드만 알고 자세한 사용법이나 개념은 따로 한번 찾아보세요!
fun searchPlaces(keyword: String) { | ||
val results = dbHelper.searchPlaces(keyword) | ||
_searchResults.postValue(results) | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
RecyclerView와 ViewModel 간의 데이터 연동을 하는 부분을 구현하기가 어려웠습니다. 해당 부분의 문제점이나 개선할 점을 봐주시면 감사하겠습니다.
ViewModel 에서 조회한 데이터를 -> Activity로 넘기는 처리가 필요한데 LiveData
사용하신것은 좋았습니다. 흔히 사용하는 방법중 하나입니다.
다만, postValue(...)
, setValue(...)
2가지 함수를 지원하는데, 각각의 차이를 알고 사용해보면 좋을것 같습니다.
안녕하십니까 멘토님!
오늘도 코드 리뷰 잘 부탁드리겠습니다.
늘 정성스러운 리뷰 달아주셔서 감동 받았습니다.. 너무 감사합니다!!
중점적으로 봐주셨으면 하는 부분