Skip to content

Instantly share code, notes, and snippets.

@haidar786
Created February 7, 2019 09:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save haidar786/3bde07a75a372f99c9146c8ff6eb60c8 to your computer and use it in GitHub Desktop.
Save haidar786/3bde07a75a372f99c9146c8ff6eb60c8 to your computer and use it in GitHub Desktop.
package com.cinderellaman.live.ui.fragments
import androidx.lifecycle.ViewModelProviders
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.Observer
import androidx.navigation.findNavController
import androidx.recyclerview.widget.GridLayoutManager
import com.cinderellaman.live.R
import com.cinderellaman.live.ui.activities.MainActivity
import com.cinderellaman.live.ui.adapters.SearchAdapter
import com.cinderellaman.live.ui.viewmodel.MainViewModel
import com.cinderellaman.live.youtubeapi.search.State
import com.cinderellaman.live.youtubeapi.search.response.Item
import kotlinx.android.synthetic.main.main_fragment.*
class MainFragment : Fragment() {
private lateinit var searchAdapter: SearchAdapter
private lateinit var viewModel: MainViewModel
companion object {
fun newInstance() = MainFragment()
}
override fun onStart() {
super.onStart()
(activity as MainActivity).supportActionBar!!.title = "Cartoons"
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View {
return inflater.inflate(R.layout.main_fragment, container, false)
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
viewModel = ViewModelProviders.of(this).get(MainViewModel::class.java)
initAdapter()
initSearchState()
}
private fun initSearchState() {
viewModel.getState().observe(this, Observer { state ->
progress_bar.visibility = if (viewModel.listIsEmpty() && state == State.LOADING) View.VISIBLE else View.GONE
error_text_view.visibility = if (viewModel.listIsEmpty() && state == State.ERROR) View.VISIBLE else View.GONE
if (!viewModel.listIsEmpty()){
searchAdapter.setState(state ?: State.DONE)
}
})
}
private fun initAdapter() {
val directions = MainFragmentDirections.actionMainFragmentToPlayerActivity(null)
searchAdapter = SearchAdapter({viewModel.retry()},{ item: Item?, position: Int ->
directions.setVideoId(item?.id?.videoId)
view?.findNavController()?.navigate(directions)
})
channels_rv.layoutManager = GridLayoutManager(context,2)
channels_rv.adapter = searchAdapter
viewModel.searchList.observe(this, Observer {
searchAdapter.submitList(it)
})
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
error_text_view.setOnClickListener { viewModel.retry() }
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment