[kotlin] 리사이클러뷰에서 아이템에 동영상 플레이어 추가하기

리사이클러뷰(RecyclerView)는 안드로이드 앱에서 리스트 항목을 표시하는 데 자주 사용됩니다. 하지만 때로는 텍스트나 이미지 외에도 동영상을 표시해야할 때가 있습니다. 이번에는 리사이클러뷰의 각 항목에 동영상 플레이어를 추가하는 방법에 대해 알아보겠습니다.

1. 리사이클러뷰 아이템 레이아웃 수정

먼저, 리사이클러뷰의 각 항목에 동영상을 표시하기 위해 레이아웃을 수정해야 합니다. 레이아웃 파일에 VideoView나 ExoPlayer와 같은 비디오 플레이어를 추가합니다.

예를 들어, 아래와 같이 레이아웃 파일을 수정할 수 있습니다.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:id="@+id/titleTextView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <VideoView
        android:id="@+id/videoView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</LinearLayout>

위 예제에서는 리사이클러뷰의 각 항목에 제목을 표시하는 TextView와 동영상을 플레이하는 VideoView를 추가했습니다.

2. 데이터 모델에 동영상 URL 추가

리사이클러뷰의 각 항목에 표시할 동영상의 URL을 데이터 모델에 추가해야 합니다. 각 항목의 모델 클래스에 동영상을 나타내는 문자열 필드를 추가합니다.

예를 들어, 데이터 모델 클래스에 videoUrl 필드를 추가할 수 있습니다.

data class VideoItem(
    val title: String,
    val videoUrl: String
)

3. 어댑터 수정

리사이클러뷰 어댑터에서는 각 항목의 뷰를 바인딩하고 동영상을 플레이해야 합니다. onBindViewHolder 메서드에서 VideoView에 동영상을 로드하고 시작하는 로직을 구현해야 합니다.

예를 들어, onBindViewHolder 메서드에서 VideoView에 동영상을 로드하는 코드는 다음과 같을 수 있습니다.

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    val item = items[position]
    holder.titleTextView.text = item.title
    holder.videoView.setVideoURI(Uri.parse(item.videoUrl))
    holder.videoView.start()
}

위 예제에서는 onBindViewHolder 메서드에서 VideoView에 동영상을 로드하고 시작하도록 설정했습니다.

이제 리사이클러뷰 각 항목에 동영상 플레이어를 성공적으로 추가했습니다. 사용자는 각 항목을 스크롤할 때마다 동영상을 볼 수 있게 될 것입니다.

이러한 방법을 활용하여 안드로이드 앱에서 리사이클러뷰 아이템에 동영상 플레이어를 추가할 수 있습니다.