동작 영상
댓글 작성 화면 변경
댓글 작성 뿐만 아니라 댓글 수정 또한 사용할 수 있도록 하기 위해서 생각해본 결과
comment: String = "" 생성자 파라미터를 추가
생성자 파라미터 설명
CommentDialogFragment는 댓글을 작성하거나 수정할 수 있는 BottomSheetDialogFragment로, 아래와 같은 인자들을 전달받는다.
- listener : 댓글 작성 또는 수정이 완료되었을 때 콜백을 전달하기 위한 인터페이스
- text: 댓글 작성 화면 상단부분에 제목 텍스트 (댓글 작성, 답글 작성)
- parentId: 댓글, 답글 작성 시 어떤 댓글에 대한 것인지 식별하기 위한 ID(nullable)
- comment: 댓글 수정 시 기존 텍스트를 입력창에 표시하기 위한 문자열
class CommentDialogFragment(
val listener: OnCommentSubmitListener,
text: String = "댓글",
private val parentId: Long? = null,
comment: String = ""
) : BottomSheetDialogFragment() {
private var commentText: String = ""
private var comment: String = ""
전역 변수에 받은 값을 init
init {
commentText = text
this.comment = comment
}
comment 값이 비어 있는 경우 새 댓글을 작성하는 것으로 간주, 값이 존재하는 경우 댓글을 수정하는 것으로 간주하여
각각 수정과 등록을 하도록 구현하였다.
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
if (comment.isNullOrEmpty()) {
onClickYes() // 등록 버튼
} else onClickEdit() // 수정
}
변경 이유
하나의 다이얼로그에서 댓글 작성과 수정을 동시에 처리한 이유는 다음과 같다.
- 댓글 작성과 수정 모두 동일한 UI를 사용하므로, 각각 별도의 다이얼로그를 만드는 것은 불필요한 중복이라고 판단 되었다.
- 'comment' 파라미터의 유무로 작성과 수정 로직을 분기 처리한다면 중복 코드를 줄이고, UI 재사용성을 높일 수 있다는 생각이 들었다.
- 한 다이얼로그에서 수정과 작성을 관리하기 때문에 코드 유지 보수가 쉬워질 것 같았다.
- 새로운 조건이 추가 될 경우에도 확장하기 쉽다고 판단 되었다.(답글 등)
후기
아직 MVVM같은 디자인 패턴은 적용하지 않았지만 최대한 기능의 응집력과 코드의 효율성을 고려하며 구조를 설계하려고 노력했다.
'TeamProject > ImadAndroid' 카테고리의 다른 글
| 답글(답글)구현 및 문제해결 (0) | 2025.05.20 |
|---|---|
| 안드로이드 댓글 좋아요 싫어요 기능 구현 (1) | 2025.05.19 |
| 안드로이드[Kotlin] 액티비티 이동 애니메이션 적용 (0) | 2025.02.20 |
| 안드로이드 UI Lag 해결 (0) | 2025.02.08 |
| [android] 텍스트 뷰 이미지 추가 (0) | 2025.02.05 |
댓글