channel load more problem

This commit is contained in:
rimthekid 2022-02-05 21:10:43 +04:00
parent c81fea96cc
commit a9f4401dc4
2 changed files with 19 additions and 5 deletions

View File

@ -33,6 +33,8 @@ android {
}
dependencies {
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.8.1'
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
implementation 'com.google.android.material:material:1.6.0-alpha02'

View File

@ -19,6 +19,7 @@ import androidx.recyclerview.widget.RecyclerView
import com.github.libretube.adapters.ChannelAdapter
import com.github.libretube.adapters.TrendingAdapter
import com.squareup.picasso.Picasso
import leakcanary.AppWatcher
import retrofit2.HttpException
import java.io.IOException
import java.net.URLEncoder
@ -30,7 +31,7 @@ class ChannelFragment : Fragment() {
private var channel_id: String? = null
private val TAG = "ChannelFragment"
//lateinit var recyclerView: RecyclerView
lateinit var nextPage: String
var nextPage: String? =null
lateinit var channelAdapter: ChannelAdapter
override fun onCreate(savedInstanceState: Bundle?) {
@ -46,10 +47,13 @@ class ChannelFragment : Fragment() {
): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_channel, container, false)
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
channel_id = channel_id!!.replace("/channel/","")
view.findViewById<TextView>(R.id.channel_name).text=channel_id
val recyclerView = view.findViewById<RecyclerView>(R.id.channel_recView)
@ -83,7 +87,7 @@ class ChannelFragment : Fragment() {
Picasso.get().load(response.avatarUrl).into(channelImage)
channelAdapter = ChannelAdapter(response.relatedStreams!!.toMutableList())
view.findViewById<RecyclerView>(R.id.channel_recView).adapter = channelAdapter
AppWatcher.objectWatcher.watch(channelAdapter, "View was detached")
val scrollView = view.findViewById<ScrollView>(R.id.channel_scrollView)
scrollView.viewTreeObserver
.addOnScrollChangedListener {
@ -91,7 +95,8 @@ class ChannelFragment : Fragment() {
== (scrollView.height + scrollView.scrollY)) {
//scroll view is at bottom
//todo find a better solution to load more videos in channel
//fetchNextPage()
if(nextPage!=null){
fetchNextPage()}
} else {
//scroll view is not at bottom
@ -104,9 +109,10 @@ class ChannelFragment : Fragment() {
}
private fun fetchNextPage(){
fun run() {
lifecycleScope.launchWhenCreated {
val response = try {
RetrofitInstance.api.getChannelNextPage(channel_id!!,nextPage)
RetrofitInstance.api.getChannelNextPage(channel_id!!,nextPage!!)
} catch (e: IOException) {
println(e)
Log.e(TAG, "IOException, you might not have internet connection")
@ -115,7 +121,8 @@ class ChannelFragment : Fragment() {
Log.e(TAG, "HttpException, unexpected response,"+e.response())
return@launchWhenCreated
}
nextPage = response.nextpage!!
println("dafaq")
nextPage = response.nextpage
channelAdapter.updateItems(response.relatedStreams!!)
}
@ -127,4 +134,9 @@ class ChannelFragment : Fragment() {
if (!isAdded) return // Fragment not attached to an Activity
activity?.runOnUiThread(action)
}
override fun onDestroyView() {
view?.findViewById<RecyclerView>(R.id.channel_recView)?.adapter=null
super.onDestroyView()
}
}