코틀린 공부를 위해 기본기 다 떼지도 않았는데 공부차 개발 시작했다가 설계가 개판이 되버렸다..
History.kt에 RecyclerView가 있고 이를 DB에 연결해주기 위해 Room을 사용하여 HistoryAdapter랑 연결했다.
RecyclerView 리스트에 각 row당 버튼이 하나 있는데 이 버튼 리스너 처리를 HistoryAdapter에서 해줄 수 있던데
문제는 해줘야 하는 기능이 Popup Dialog 띄워주고, DB에 저장하기 위해 쓰레드도 만들어줘야 하고 뭔가 스케일이 점점 커지니
HistoryAdapter에서 할게 아니라 History에서 작업을 해줘야 겠다는 생각이 들기 시작함
그런데 안드로이드도 코틀린도 처음이라 HistoryAdapter -> History 메서드를 어떻게 실행해줘야 할 지 모르겠다..
그냥 Delegate 해줘도 되겠지만 안 그래도 꼬인 설계가 더 꼬일꺼 같고... 보통 어떻게 처리함?
요약)
1. 위 이미지 처럼 각 row당 선택 버튼이 있고, 버튼 리스너는 HistoryAdapter에 있음
2. 하지만 리스너에서 처리하는걸 History에서 해주고 싶음
3. 설계가 개판인게 근본적인 문제지만.. 일단 이럴 때 그냥 델리게이트 써도 괜찮나?
3개의 댓글
무분별한 사용은 차단될 수 있습니다.
힝거루
일반적인 방법은 Adapter 생성자로 버튼 리스너나 콜백을 넘겨받는거지
집에가게해줘
아... C# 할 때는 걍 델리게이트로 등록해서 썻는데 코틀린에서는 리스너나 콜백을 줘서 할 수 있구나
개편하네 ㅋㅋㅋ
닉네임대충짓
mvvm 구조가 아니라면
윗댓 말대로 어댑터 생성시에 함수 넘기면됨
걍 댓글코딩이니.. 컴파일에러는 몰?루
class History {
val adapter = Adapter(::function)
fun function() {
}
}
class Adapter(val onClick: ()-> Unit) {
}