Untitled
unknown
plain_text
9 months ago
2.1 kB
7
Indexable
// 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
}
}
})Editor is loading...
Leave a Comment