mirror of
https://github.com/NiciDieNase/chaosflix
synced 2025-02-17 05:28:24 +00:00
refactor eventdetails and related events list
This commit is contained in:
parent
45124c8f23
commit
08550608f7
4 changed files with 23 additions and 41 deletions
|
@ -4,29 +4,23 @@ import android.view.LayoutInflater
|
|||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.recyclerview.widget.DiffUtil
|
||||
import androidx.recyclerview.widget.ListAdapter
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import de.nicidienase.chaosflix.common.mediadata.entities.recording.persistence.Event
|
||||
import de.nicidienase.chaosflix.touch.databinding.ItemEventCardviewBinding
|
||||
|
||||
open class EventRecyclerViewAdapter(val listener: (Event) -> Unit) :
|
||||
ItemRecyclerViewAdapter<Event, EventRecyclerViewAdapter.ViewHolder>() {
|
||||
open class EventRecyclerViewAdapter(val listener: (Event) -> Unit): ListAdapter<Event, EventRecyclerViewAdapter.ViewHolder>(EventDiffUtil) {
|
||||
object EventDiffUtil: DiffUtil.ItemCallback<Event>() {
|
||||
override fun areItemsTheSame(oldItem: Event, newItem: Event): Boolean = oldItem.guid == newItem.guid
|
||||
override fun areContentsTheSame(oldItem: Event, newItem: Event): Boolean = oldItem == newItem
|
||||
}
|
||||
|
||||
var showConferenceName: Boolean = false
|
||||
|
||||
override fun getComparator(): Comparator<in Event>? {
|
||||
return Comparator { o1, o2 -> o1.title.compareTo(o2.title) }
|
||||
}
|
||||
|
||||
override fun getItemId(position: Int): Long {
|
||||
return items[position].id
|
||||
}
|
||||
|
||||
override fun getFilteredProperties(item: Event): List<String> {
|
||||
return listOfNotNull(item.title,
|
||||
item.subtitle,
|
||||
item.description,
|
||||
item.getSpeakerString()
|
||||
)
|
||||
return getItem(position).id
|
||||
}
|
||||
|
||||
override fun onCreateViewHolder(p0: ViewGroup, pItemConferenceCardviewBinding1: Int): ViewHolder {
|
||||
|
@ -35,7 +29,7 @@ open class EventRecyclerViewAdapter(val listener: (Event) -> Unit) :
|
|||
}
|
||||
|
||||
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||
val event = items[position]
|
||||
val event = getItem(position)
|
||||
holder.binding.event = event
|
||||
holder.binding.root.setOnClickListener {
|
||||
listener(event)
|
||||
|
@ -49,5 +43,5 @@ open class EventRecyclerViewAdapter(val listener: (Event) -> Unit) :
|
|||
ViewCompat.setTransitionName(holder.binding.imageView, "thumb_${event.guid}")
|
||||
}
|
||||
|
||||
inner class ViewHolder(val binding: ItemEventCardviewBinding) : androidx.recyclerview.widget.RecyclerView.ViewHolder(binding.root)
|
||||
inner class ViewHolder(val binding: ItemEventCardviewBinding) : RecyclerView.ViewHolder(binding.root)
|
||||
}
|
||||
|
|
|
@ -7,7 +7,6 @@ import android.view.Menu
|
|||
import android.view.MenuInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.SearchView
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.viewModels
|
||||
|
@ -23,7 +22,7 @@ import de.nicidienase.chaosflix.touch.R
|
|||
import de.nicidienase.chaosflix.touch.browse.adapters.EventRecyclerViewAdapter
|
||||
import de.nicidienase.chaosflix.touch.databinding.FragmentEventsListBinding
|
||||
|
||||
abstract class EventsListFragment : Fragment(), SearchView.OnQueryTextListener {
|
||||
abstract class EventsListFragment : Fragment() {
|
||||
|
||||
protected val viewModel: BrowseViewModel by viewModels { ViewModelFactory.getInstance(requireContext()) }
|
||||
|
||||
|
@ -79,7 +78,7 @@ abstract class EventsListFragment : Fragment(), SearchView.OnQueryTextListener {
|
|||
}
|
||||
|
||||
protected fun setEvents(events: List<Event>) {
|
||||
eventAdapter?.items = events
|
||||
eventAdapter?.submitList(events)
|
||||
val layoutState = arguments?.getParcelable<Parcelable>(LAYOUTMANAGER_STATE)
|
||||
if (layoutState != null) {
|
||||
layoutManager?.onRestoreInstanceState(layoutState)
|
||||
|
@ -104,15 +103,6 @@ abstract class EventsListFragment : Fragment(), SearchView.OnQueryTextListener {
|
|||
// }
|
||||
}
|
||||
|
||||
override fun onQueryTextSubmit(query: String): Boolean {
|
||||
return false
|
||||
}
|
||||
|
||||
override fun onQueryTextChange(newText: String): Boolean {
|
||||
eventAdapter?.filter?.filter(newText)
|
||||
return true
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val ARG_TYPE = "type"
|
||||
private const val ARG_CONFERENCE = "conference"
|
||||
|
|
|
@ -109,6 +109,7 @@ class EventDetailsFragment : Fragment() {
|
|||
}
|
||||
eventLivedata.observe(viewLifecycleOwner, Observer { event ->
|
||||
if (event != null) {
|
||||
Log.d(TAG, "Update Event")
|
||||
binding.event = event
|
||||
binding.lifecycleOwner = viewLifecycleOwner
|
||||
Log.d(TAG, "Loading Event ${event.title}, ${event.guid}")
|
||||
|
@ -124,11 +125,18 @@ class EventDetailsFragment : Fragment() {
|
|||
})
|
||||
viewModel.getRelatedEvents().observe(viewLifecycleOwner, Observer {
|
||||
if (it != null) {
|
||||
relatedEventsAdapter.items = it
|
||||
Log.d(TAG, "update related events")
|
||||
relatedEventsAdapter.submitList(it)
|
||||
}
|
||||
if (it?.isNotEmpty() == true) {
|
||||
binding.relatedItemsText.visibility = View.VISIBLE
|
||||
} else {
|
||||
binding.relatedItemsText.visibility = View.GONE
|
||||
}
|
||||
})
|
||||
viewModel.getBookmarkForEvent()
|
||||
.observe(viewLifecycleOwner, Observer { watchlistItem: WatchlistItem? ->
|
||||
Log.d(TAG, "Update bookmark")
|
||||
val shouldInvalidate = this@EventDetailsFragment.watchlistItem == null || watchlistItem == null
|
||||
this@EventDetailsFragment.watchlistItem = watchlistItem
|
||||
if(shouldInvalidate){
|
||||
|
@ -225,17 +233,6 @@ class EventDetailsFragment : Fragment() {
|
|||
}
|
||||
}
|
||||
})
|
||||
|
||||
viewModel.getRelatedEvents().observe(viewLifecycleOwner, Observer {
|
||||
if (it != null) {
|
||||
relatedEventsAdapter.items = it
|
||||
}
|
||||
if (it?.isNotEmpty() == true) {
|
||||
binding.relatedItemsText.visibility = View.VISIBLE
|
||||
} else {
|
||||
binding.relatedItemsText.visibility = View.GONE
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
private fun updateBookmark() {
|
||||
|
|
|
@ -19,10 +19,11 @@
|
|||
android:id="@+id/sliding_tabs"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/TabsStyle"
|
||||
style="@style/ColoredTabLayout"
|
||||
app:layout_anchor="@id/toolbar"
|
||||
app:layout_anchorGravity="bottom"
|
||||
app:tabMode="auto"/>
|
||||
<!-- style="@style/TabsStyle"-->
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue