[kotlin] 리사이클러뷰에서 아이템에 댓글(comment) 기능 추가하기

리사이클러뷰(RecyclerView)는 안드로이드 앱에서 다양한 리스트 형태의 데이터를 표현하는 데 사용되는 중요한 위젯이다. 여기서는 리사이클러뷰에 사용자가 아이템에 댓글을 추가할 수 있는 기능을 구현하는 방법을 살펴볼 것이다.

1. 댓글 입력 UI 추가

우선, 각 아이템에 댓글을 입력하고 제출할 수 있는 UI를 만들어야 한다. 이를 위해 각 아이템 레이아웃 파일에 EditTextButton을 추가하여 댓글을 입력하고 제출할 수 있는 인터페이스를 생성해야 한다.

<EditText
    android:id="@+id/commentEditText"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="댓글을 입력해주세요" />

<Button
    android:id="@+id/submitCommentButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="제출" />

2. 댓글 데이터 구조 정의

각 아이템에 대한 댓글을 관리하기 위해 댓글 데이터의 구조를 정의해야 한다. 이를 위해 Comment 모델 클래스를 정의하고 실제 댓글 데이터를 저장하는 방법을 설계해야 한다.

data class Comment(
    val id: String,
    val text: String,
    val userId: String
)

3. 리사이클러뷰 어댑터에 댓글 추가 기능 구현

리사이클러뷰 어댑터에서는 각 아이템에 댓글을 추가하고 제출할 수 있는 기능을 구현해야 한다. 댓글이 추가될 때마다 해당 아이템의 댓글 목록을 업데이트해야 한다.

class ItemAdapter(val items: List<Item>) : RecyclerView.Adapter<ItemAdapter.ViewHolder>() {

    // ... (기타 코드)

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val item = items[position]
        // 기존 코드와 함께 아이템에 대한 댓글을 보여주고 관리하는 로직 추가
        // 댓글 추가 버튼에 대한 클릭 리스너 구현
    }
}

4. 사용자 입력 처리

마지막으로, 사용자가 댓글을 입력하고 제출했을 때의 처리를 구현해야 한다. 사용자가 입력한 댓글을 가져와 Comment 모델로 만들고, 해당 아이템의 댓글 목록에 추가하는 방법을 구현해야 한다.

val submitCommentButton = findViewById<Button>(R.id.submitCommentButton)
submitCommentButton.setOnClickListener {
    val commentText = commentEditText.text.toString()
    // Comment 모델을 만들고 해당 아이템의 댓글 목록에 추가
}

이렇게 리사이클러뷰에 각 아이템에 댓글을 추가하는 기능을 구현할 수 있다. 사용자가 각 아이템에 댓글을 달고 이를 관리하는 방법을 살펴보았다.

참고 자료