From 8782a4af38ac76a66e3b82f1ff3ff5376132cab2 Mon Sep 17 00:00:00 2001 From: rimthekid Date: Sat, 5 Feb 2022 13:30:29 +0400 Subject: [PATCH] channel fragment done --- .../com/github/libretube/ChannelFragment.kt | 8 +++ .../libretube/adapters/ChannelAdapter.kt | 54 +++++++++++++++++ .../java/com/github/libretube/obj/Channel.kt | 2 +- app/src/main/res/layout/video_channel_row.xml | 58 +++++++++++++++++++ 4 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/github/libretube/adapters/ChannelAdapter.kt create mode 100644 app/src/main/res/layout/video_channel_row.xml diff --git a/app/src/main/java/com/github/libretube/ChannelFragment.kt b/app/src/main/java/com/github/libretube/ChannelFragment.kt index f76c89203..569cd6602 100644 --- a/app/src/main/java/com/github/libretube/ChannelFragment.kt +++ b/app/src/main/java/com/github/libretube/ChannelFragment.kt @@ -9,6 +9,9 @@ import android.view.ViewGroup import android.widget.ImageView import android.widget.TextView import androidx.lifecycle.lifecycleScope +import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.github.libretube.adapters.ChannelAdapter import com.github.libretube.adapters.TrendingAdapter import com.squareup.picasso.Picasso import retrofit2.HttpException @@ -26,6 +29,8 @@ class ChannelFragment : Fragment() { // TODO: Rename and change types of parameters private var channel_id: String? = null private val TAG = "ChannelFragment" + lateinit var recyclerView: RecyclerView + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) arguments?.let { @@ -45,6 +50,8 @@ class ChannelFragment : Fragment() { super.onViewCreated(view, savedInstanceState) channel_id = channel_id!!.replace("/channel/","") view.findViewById(R.id.channel_name).text=channel_id + recyclerView = view.findViewById(R.id.channel_recView) + recyclerView.layoutManager = GridLayoutManager(view.context, 1) fetchChannel(view) } @@ -69,6 +76,7 @@ class ChannelFragment : Fragment() { val channelImage = view.findViewById(R.id.channel_image) Picasso.get().load(response.bannerUrl).into(bannerImage) Picasso.get().load(response.avatarUrl).into(channelImage) + recyclerView.adapter = ChannelAdapter(response.relatedStreams!!) } } } diff --git a/app/src/main/java/com/github/libretube/adapters/ChannelAdapter.kt b/app/src/main/java/com/github/libretube/adapters/ChannelAdapter.kt new file mode 100644 index 000000000..170ff9f55 --- /dev/null +++ b/app/src/main/java/com/github/libretube/adapters/ChannelAdapter.kt @@ -0,0 +1,54 @@ +package com.github.libretube.adapters + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.appcompat.app.AppCompatActivity +import androidx.core.os.bundleOf +import androidx.recyclerview.widget.RecyclerView +import com.github.libretube.MainActivity +import com.squareup.picasso.Picasso +import com.github.libretube.PlayerFragment +import com.github.libretube.R +import com.github.libretube.obj.StreamItem +import com.github.libretube.videoViews + +class ChannelAdapter(private val videoFeed: List): RecyclerView.Adapter() { + override fun getItemCount(): Int { + return videoFeed.size + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ChannelViewHolder { + val layoutInflater = LayoutInflater.from(parent.context) + val cell = layoutInflater.inflate(R.layout.video_channel_row,parent,false) + return ChannelViewHolder(cell) + } + + override fun onBindViewHolder(holder: ChannelViewHolder, position: Int) { + val trending = videoFeed[position] + holder.v.findViewById(R.id.channel_description).text = trending.title + holder.v.findViewById(R.id.channel_views).text = trending.views.videoViews()+" • "+trending.uploadedDate + val thumbnailImage = holder.v.findViewById(R.id.channel_thumbnail) + Picasso.get().load(trending.thumbnail).into(thumbnailImage) + holder.v.setOnClickListener{ + var bundle = Bundle() + bundle.putString("videoId",trending.url!!.replace("/watch?v=","")) + var frag = PlayerFragment() + frag.arguments = bundle + val activity = holder.v.context as AppCompatActivity + activity.supportFragmentManager.beginTransaction() + .remove(PlayerFragment()) + .commit() + activity.supportFragmentManager.beginTransaction() + .replace(R.id.container, frag) + .commitNow() + } + } +} +class ChannelViewHolder(val v: View): RecyclerView.ViewHolder(v){ + init { + } +} \ No newline at end of file diff --git a/app/src/main/java/com/github/libretube/obj/Channel.kt b/app/src/main/java/com/github/libretube/obj/Channel.kt index 92db3ecfe..d7de567d8 100644 --- a/app/src/main/java/com/github/libretube/obj/Channel.kt +++ b/app/src/main/java/com/github/libretube/obj/Channel.kt @@ -9,5 +9,5 @@ data class Channel( var nextpage: String? = null, var subscriberCount: Long = 0, var verified: Boolean = false, - var relatedStreams: List? = null + var relatedStreams: List? = null ) diff --git a/app/src/main/res/layout/video_channel_row.xml b/app/src/main/res/layout/video_channel_row.xml new file mode 100644 index 000000000..8c649d198 --- /dev/null +++ b/app/src/main/res/layout/video_channel_row.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + \ No newline at end of file