2021-02-06 19:02:12 +01:00
package org.mosad.teapod.ui.activity.main.fragments
2020-10-08 22:20:20 +02:00
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
2020-10-11 18:07:00 +02:00
import android.widget.SearchView
2020-10-08 22:20:20 +02:00
import androidx.fragment.app.Fragment
2020-10-11 18:07:00 +02:00
import kotlinx.coroutines.*
2020-11-25 22:35:55 +01:00
import org.mosad.teapod.databinding.FragmentSearchBinding
2020-10-11 18:07:00 +02:00
import org.mosad.teapod.parser.AoDParser
2020-10-15 16:23:52 +02:00
import org.mosad.teapod.util.decoration.MediaItemDecoration
2020-10-14 20:22:20 +02:00
import org.mosad.teapod.util.adapter.MediaItemAdapter
2021-01-20 16:10:41 +01:00
import org.mosad.teapod.util.showFragment
2020-10-08 22:20:20 +02:00
class SearchFragment : Fragment ( ) {
2020-11-25 22:35:55 +01:00
private lateinit var binding : FragmentSearchBinding
2020-10-14 20:22:20 +02:00
private var adapter : MediaItemAdapter ? = null
2020-10-11 18:07:00 +02:00
2020-11-25 22:35:55 +01:00
override fun onCreateView ( inflater : LayoutInflater , container : ViewGroup ? , savedInstanceState : Bundle ? ) : View {
binding = FragmentSearchBinding . inflate ( inflater , container , false )
return binding . root
2020-10-11 14:25:47 +02:00
}
2020-10-08 22:20:20 +02:00
2020-10-11 14:25:47 +02:00
override fun onViewCreated ( view : View , savedInstanceState : Bundle ? ) {
super . onViewCreated ( view , savedInstanceState )
2020-10-11 18:07:00 +02:00
GlobalScope . launch {
// create and set the adapter, needs context
withContext ( Dispatchers . Main ) {
2020-10-12 20:30:45 +02:00
context ?. let {
2020-10-16 19:56:08 +02:00
adapter = MediaItemAdapter ( AoDParser . itemMediaList )
adapter !! . onItemClick = { mediaId , _ ->
2020-11-25 22:35:55 +01:00
binding . searchText . clearFocus ( )
2021-01-20 16:10:41 +01:00
activity ?. showFragment ( MediaFragment ( mediaId ) )
2020-10-15 13:00:44 +02:00
}
2020-11-25 22:35:55 +01:00
binding . recyclerMediaSearch . adapter = adapter
binding . recyclerMediaSearch . addItemDecoration ( MediaItemDecoration ( 9 ) )
2020-10-12 20:30:45 +02:00
}
2020-10-11 18:07:00 +02:00
}
}
2020-10-12 20:30:45 +02:00
initActions ( )
2020-10-11 18:07:00 +02:00
}
private fun initActions ( ) {
2020-11-25 22:35:55 +01:00
binding . searchText . setOnQueryTextListener ( object : SearchView . OnQueryTextListener {
2020-10-11 18:07:00 +02:00
override fun onQueryTextSubmit ( query : String ? ) : Boolean {
2020-10-13 20:23:55 +02:00
adapter ?. filter ?. filter ( query )
adapter ?. notifyDataSetChanged ( )
2020-10-11 18:07:00 +02:00
return false
}
override fun onQueryTextChange ( newText : String ? ) : Boolean {
2020-10-13 20:23:55 +02:00
adapter ?. filter ?. filter ( newText )
adapter ?. notifyDataSetChanged ( )
2020-10-11 18:07:00 +02:00
return false
}
} )
2020-10-08 22:20:20 +02:00
}
}