Skip to content

Commit

Permalink
Pagination Done With a Small BUG
Browse files Browse the repository at this point in the history
  • Loading branch information
shivenducs1136 committed Nov 29, 2021
1 parent 0d6cdbe commit ccbf898
Show file tree
Hide file tree
Showing 13 changed files with 396 additions and 258 deletions.
4 changes: 3 additions & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ class PlaylistItemAdapter() : Adapter<PlaylistItemViewHolder>(), Parcelable {
}

override fun getItemCount(): Int {
Log.e("itemcount",collecty.size.toString())
return collecty.size
}

Expand Down
52 changes: 38 additions & 14 deletions app/src/main/java/com/dsckiet/youthhub/PlaylistVideoListFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -32,50 +32,59 @@ class PlaylistVideoListFragment : Fragment() {
var pageToken = ""
var isScrolling:Boolean = false
var scrolledoutitems : Int = 0
var itemsy : List<Item> = ArrayList()
var itemsy : ArrayList<Item> = ArrayList()
var itemsyl : ArrayList<Item> = ArrayList()
var currentitems:Int = 0
var totalitems: Int =0
var x = 1
var key : Int = 0
var hmap : HashMap<Int,String> = HashMap()
var isPageAvailable : Boolean = true
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = DataBindingUtil.inflate(inflater,R.layout.fragment_playlist_video_list,container,false)
return binding.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val bundle = arguments
manager = LinearLayoutManager(requireContext())
PlaylistID = bundle!!.getString("PlaylistVideoList_PlaylistID").toString()
binding.playlistvideolistBackBtn.setOnClickListener {
findNavController().navigate(R.id.action_playlistVideoListFragment_to_homeFragment)
}

getplaylistitem()
binding.playlistvideolistRecview.addOnScrollListener(object : RecyclerView.OnScrollListener(){
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
super.onScrollStateChanged(recyclerView, newState)
if(newState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL){
isScrolling = true
binding.playlistvideolistInfo.visibility = View.GONE
// binding.playlistvideolistInfo.visibility = View.GONE
}
}

override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
currentitems = recyclerView.layoutManager!!.childCount
totalitems = recyclerView.layoutManager!!.itemCount
scrolledoutitems = (recyclerView.layoutManager as LinearLayoutManager?)!!.findFirstVisibleItemPosition()
scrolledoutitems = (recyclerView.layoutManager as LinearLayoutManager?)!!.findLastVisibleItemPosition()

if(isScrolling && (currentitems + scrolledoutitems == totalitems)){
if(isScrolling && (currentitems + scrolledoutitems == totalitems)&& isPageAvailable){
isScrolling = false
binding.playlistvideolistProgressbar.visibility = View.VISIBLE
// binding.playlistvideolistProgressbar.visibility = View.VISIBLE
getplaylistitem()
// fetchdata()
}
}
})
getplaylistitem()

return binding.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)


// getplaylistitem()

}

Expand All @@ -102,13 +111,28 @@ class PlaylistVideoListFragment : Fragment() {
playlistViewModel.playlistitem.observe(viewLifecycleOwner, Observer {

if (it.isSuccessful){
itemsy = itemsy + (it.body()?.items!!)
playlistItemAdapter.playlistitemsetStateWiseTracker(itemsy)

// itemsy.addAll(it.body()?.items!!)
Log.e("RESULT", it.body()?.nextPageToken.toString())
if(!hmap.containsValue(it.body()?.nextPageToken.toString()))
{
itemsy.addAll(it.body()?.items!!)
playlistItemAdapter.playlistitemsetStateWiseTracker(itemsy)
}


pageToken = it.body()?.nextPageToken.toString()
if(pageToken.isNullOrEmpty()){
isPageAvailable = false
}else {
if(!hmap.containsValue(it.body()?.nextPageToken.toString())) {
hmap.put(key, it.body()?.nextPageToken.toString())
key++
}
}
}
binding.playlistvideolistProgressbar.visibility = View.GONE
Log.d("BOLT","success"+it.toString())

})
binding.playlistvideolistRecview.layoutManager = manager
binding.playlistvideolistRecview.adapter = playlistItemAdapter
Expand Down
119 changes: 69 additions & 50 deletions app/src/main/java/com/dsckiet/youthhub/ui/PlaylistFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,7 @@ class PlaylistFragment : Fragment() {
binding.idkaid.visibility = View.GONE
viewplaylistvialink()
binding.idkaid.setOnClickListener {

playlistclicked()

}

}
Expand All @@ -75,6 +73,7 @@ class PlaylistFragment : Fragment() {

val repository=Repository(this.requireContext())
val vmf= PlaylistViewModelFactory(repository)
binding.noResFound.visibility = View.GONE
playlistViewModel = ViewModelProvider(this,vmf).get(PlaylistViewModel::class.java)

var link =""
Expand All @@ -87,57 +86,77 @@ class PlaylistFragment : Fragment() {
link = query.toString()
str = link
substr = "list="
beforelistinLink = str.substring(0, str.indexOf(substr))
Log.e("BEFORE SSTRING : ",beforelistinLink)
id = str.substring(str.indexOf(substr) + substr.length)
Log.e("After SString : ",id)
playlistViewModel.getPlaylist("snippet",id)
playlistViewModel.playlist.observe(viewLifecycleOwner, Observer {
Log.e("ERROR",it.body().toString())
if(it.isSuccessful) {
binding.idkaid.visibility = View.VISIBLE
// addplaylist to home function
Picasso.with(context)
.load(it.body()?.items?.get(0)?.snippet?.thumbnails?.standard?.url)
.into(binding.id.searchPlaylistThumbnail)
binding.id.searchTitleIv.text = it.body()?.items?.get(0)?.snippet?.title
binding.id.playlistChannelNameIv.text =
it.body()?.items?.get(0)?.snippet?.channelTitle
playlistViewModel.getPlaylistItem("snippet", id, "")
playlistViewModel.playlistitem.observe(viewLifecycleOwner, Observer {
no_of_vid = it.body()?.pageInfo?.totalResults.toString()
binding.id.searchInPlaylistTotalVideos.text =
it.body()?.pageInfo?.totalResults.toString() + " videos"
})
Playlist_title =it.body()?.items?.get(0)?.snippet?.title.toString()
Playlist_ThumbNail = it.body()?.items?.get(0)?.snippet?.thumbnails?.standard?.url.toString()
Playlist_channel_name = it.body()?.items?.get(0)?.snippet?.channelTitle.toString()

binding.id.searchAddBtn.setOnClickListener {
binding.id.searchAddedBtn.visibility = View.VISIBLE
binding.id.searchAddBtn.visibility = View.GONE
val bundle = Bundle()

bundle.putString("Playlist_title", Playlist_title)
bundle.putString("Playlist_channel_name",Playlist_channel_name)
bundle.putString("Playlist_No_Of_Videos", no_of_vid)
bundle.putString("Playlist_ThumbNail", Playlist_ThumbNail)
bundle.putString("Playlist__ID",id)
findNavController().navigate(R.id.action_playlistFragment_to_homeFragment,bundle)
Toast.makeText(requireContext(), "$Playlist_title added", Toast.LENGTH_LONG).show()
if(str.indexOf(substr)!=-1){
beforelistinLink = str.substring(0, str.indexOf(substr))
Log.e("BEFORE SSTRING : ",beforelistinLink)
id = str.substring(str.indexOf(substr) + substr.length)
Log.e("After SString : ",id)
playlistViewModel.getPlaylist("snippet",id)
playlistViewModel.playlist.observe(viewLifecycleOwner, Observer {
Log.e("ERROR",it.body().toString())
if(it.isSuccessful) {
binding.idkaid.visibility = View.VISIBLE
// addplaylist to home function
Picasso.with(context)
.load(it.body()?.items?.get(0)?.snippet?.thumbnails?.standard?.url)
.into(binding.id.searchPlaylistThumbnail)
binding.id.searchTitleIv.text = it.body()?.items?.get(0)?.snippet?.title
binding.id.playlistChannelNameIv.text =
it.body()?.items?.get(0)?.snippet?.channelTitle
playlistViewModel.getPlaylistItem("snippet", id, "")
playlistViewModel.playlistitem.observe(viewLifecycleOwner, Observer {
if(it.isSuccessful){
no_of_vid = it.body()?.pageInfo?.totalResults.toString()
binding.id.searchInPlaylistTotalVideos.text =
it.body()?.pageInfo?.totalResults.toString() + " videos"
}
else{
binding.noResFound.text = "Please provide a valid link."
binding.noResFound.visibility = View.VISIBLE
}

})
Playlist_title =it.body()?.items?.get(0)?.snippet?.title.toString()
Playlist_ThumbNail = it.body()?.items?.get(0)?.snippet?.thumbnails?.standard?.url.toString()
Playlist_channel_name = it.body()?.items?.get(0)?.snippet?.channelTitle.toString()

binding.id.searchAddBtn.setOnClickListener {
binding.id.searchAddedBtn.visibility = View.VISIBLE
binding.id.searchAddBtn.visibility = View.GONE
val bundle = Bundle()

bundle.putString("Playlist_title", Playlist_title)
bundle.putString("Playlist_channel_name",Playlist_channel_name)
bundle.putString("Playlist_No_Of_Videos", no_of_vid)
bundle.putString("Playlist_ThumbNail", Playlist_ThumbNail)
bundle.putString("Playlist__ID",id)
findNavController().navigate(R.id.action_playlistFragment_to_homeFragment,bundle)
Toast.makeText(requireContext(), "$Playlist_title added", Toast.LENGTH_LONG).show()
}
}
}

})
playlistViewModel.getPlaylistItem("snippet","",id)
playlistViewModel.playlistitem.observe(viewLifecycleOwner, Observer {
if (it.isSuccessful){
Log.e("Playlistitem",it.body()?.pageInfo?.totalResults.toString())
binding.id.searchInPlaylistTotalVideos.text = it.body()?.pageInfo?.totalResults.toString() + " videos"
}
})
else{
binding.noResFound.text = "Please provide a valid link."
binding.noResFound.visibility = View.VISIBLE
}
})
playlistViewModel.getPlaylistItem("snippet","",id)
playlistViewModel.playlistitem.observe(viewLifecycleOwner, Observer {
if (it.isSuccessful){
Log.e("Playlistitem",it.body()?.pageInfo?.totalResults.toString())
binding.id.searchInPlaylistTotalVideos.text = it.body()?.pageInfo?.totalResults.toString() + " videos"
}
else{
binding.noResFound.text = "Please provide a valid link."
binding.noResFound.visibility = View.VISIBLE
}
})

}else{
binding.noResFound.text = "No Results Found! Try Again."
binding.noResFound.visibility = View.VISIBLE
}
return false

}
override fun onQueryTextChange(newText: String?): Boolean {
return false
Expand Down
10 changes: 5 additions & 5 deletions app/src/main/java/com/dsckiet/youthhub/ui/ProfileFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import androidx.navigation.fragment.findNavController
import com.dsckiet.youthhub.R
import com.dsckiet.youthhub.databinding.FragmentProfileBinding
import com.google.android.gms.auth.api.signin.GoogleSignIn
Expand Down Expand Up @@ -38,12 +39,11 @@ class ProfileFragment : Fragment() {
.load(signInAccount.photoUrl)
.into(binding.profilePic)
binding.userEmail.text = signInAccount.email
binding.userEmail.text="ufhdni"
}





binding.settingsFab.setOnClickListener {
findNavController().navigate(R.id.action_profileFragment_to_settingsFragment)
}
}

}
32 changes: 32 additions & 0 deletions app/src/main/java/com/dsckiet/youthhub/ui/SettingsFragment.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.dsckiet.youthhub.ui

import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import com.dsckiet.youthhub.R
import com.dsckiet.youthhub.databinding.FragmentSettingsBinding
import com.dsckiet.youthhub.databinding.FragmentVideoPlayerBinding


class SettingsFragment : Fragment() {

private lateinit var binding: FragmentSettingsBinding

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = DataBindingUtil.inflate(inflater,R.layout.fragment_settings,container,false)
return binding.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.settingsBackBtn.setOnClickListener {

}
}
}
11 changes: 10 additions & 1 deletion app/src/main/java/com/dsckiet/youthhub/ui/VideoPlayerFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,14 @@ class VideoPlayerFragment : Fragment() {
private var video_title:String =""
private lateinit var published_at:String
private lateinit var description:String


// override fun onSaveInstanceState(outState: Bundle) {
// super.onSaveInstanceState(outState)
// outState.putInt("data", yourdata)
// }


override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
Expand Down Expand Up @@ -69,10 +77,11 @@ class VideoPlayerFragment : Fragment() {
}
youTubePlayerView.addYouTubePlayerListener(object : AbstractYouTubePlayerListener() {
override fun onReady(youTubePlayer: YouTubePlayer) {
youTubePlayerView.getPlayerUiController();
youTubePlayerView.getPlayerUiController()
val videoId = "${videoID}" //change according to your need
youTubePlayer.play()
youTubePlayer.cueVideo(videoId, 0F)
youTubePlayerView.getPlayerUiController().showCurrentTime(true)
}
})
}
Expand Down
12 changes: 11 additions & 1 deletion app/src/main/res/layout/fragment_playlist.xml
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,17 @@
android:layout_marginTop="20dp" />

</RelativeLayout>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textColor="#525151"
android:fontFamily="@font/poppins"
android:textSize="20dp"
android:layout_below="@+id/qwerty"
android:layout_margin="20dp"
android:id="@+id/no_res_found"
/>
</RelativeLayout>

</FrameLayout>
Expand Down
Loading

0 comments on commit ccbf898

Please sign in to comment.