Untitled
// Video Data Model data class Video( val videoUrl: String, val author: String, val description: String, val likes: Int, // ... other fields ) // RecyclerView Adapter class VideoAdapter(private val videos: List<Video>) : RecyclerView.Adapter<VideoAdapter.VideoViewHolder>() { class VideoViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val videoPlayer: PlayerView = itemView.findViewById(R.id.video_player) // Your PlayerView // ... other views (author, description, etc.) fun bind(video: Video) { // Initialize ExoPlayer and play the video val exoPlayer = ExoPlayer.Builder(itemView.context).build() videoPlayer.player = exoPlayer val mediaItem = MediaItem.fromUri(video.videoUrl) exoPlayer.setMediaItem(mediaItem) exoPlayer.prepare() // ... set other data (author, description, etc.) } } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VideoViewHolder { val view = LayoutInflater.from(parent.context) .inflate(R.layout.video_item_layout, parent, false) // Your item layout return VideoViewHolder(view) } override fun onBindViewHolder(holder: VideoViewHolder, position: Int) { holder.bind(videos[position]) } override fun getItemCount(): Int = videos.size } // In your Activity/Fragment: val recyclerView: RecyclerView = findViewById(R.id.video_recycler_view) val videos = listOf( // Get your video data (from server or local) Video("url1", "user1", "desc1", 100), Video("url2", "user2", "desc2", 200), // ... ) val adapter = VideoAdapter(videos) recyclerView.adapter = adapter // For "swipe up" to change videos (simplified example): recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() { override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { super.onScrolled(recyclerView, dx, dy) if (dy > 0) { // Scrolling down (towards next video) // ... Logic to preload the next video } } })
Leave a Comment