This repository has been archived on 2026-05-26. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
weserplaner/app/src/main/java/com/denizk0461/studip/adapter/CanteenOfferPageAdapter.kt
T

70 lines
2.6 KiB
Kotlin
Raw Normal View History

2023-04-16 21:41:46 +02:00
package com.denizk0461.studip.adapter
2023-04-18 16:41:01 +02:00
import android.util.Log
2023-04-16 21:41:46 +02:00
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.denizk0461.studip.databinding.ItemScrollablePageBinding
import com.denizk0461.studip.model.CanteenOffer
2023-04-18 16:41:01 +02:00
class CanteenOfferPageAdapter(private var offers: List<CanteenOffer>, private var daysCovered: Int, private var prefsRegex: Regex) : RecyclerView.Adapter<CanteenOfferPageAdapter.CanteenOfferPageViewHolder>() {
2023-04-16 21:41:46 +02:00
class CanteenOfferPageViewHolder(val binding: ItemScrollablePageBinding) : RecyclerView.ViewHolder(binding.root)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CanteenOfferPageViewHolder =
CanteenOfferPageViewHolder(
ItemScrollablePageBinding.inflate(
LayoutInflater.from(parent.context),
parent,
false
)
)
override fun getItemCount(): Int = daysCovered
override fun onBindViewHolder(holder: CanteenOfferPageViewHolder, position: Int) {
holder.binding.pageRecyclerView.apply {
layoutManager = LinearLayoutManager(holder.binding.root.context, LinearLayoutManager.VERTICAL, false)
// TODO second filter needs to be worked on; it shouldn't filter out something if two options are selected and only one is met
2023-04-18 16:41:01 +02:00
// Log.d("eek!5", prefsRegex.toString())
val filteredForDate = offers.filter { it.dateId == position }
val filteredForPreferences = if (prefsRegex.toString() == "ffffffffff") {
// show all elements and skip filtering
filteredForDate
} else {
filteredForDate.filter {
Log.d("eek!5", "${it.title}: - ${prefsRegex} vs ${it.dietaryPreferences}")
2023-04-18 16:41:01 +02:00
prefsRegex.matches(it.dietaryPreferences)
}
}
// .filter { it.dietaryPreferences == prefs.deconstruct() }
// val filtered2 = filtered
// offers
adapter = CanteenOfferItemAdapter(filteredForPreferences) // TODO check if empty
2023-04-16 21:41:46 +02:00
scheduleLayoutAnimation()
}
}
fun setNewItems(items: List<CanteenOffer>, daysCovered: Int) {
this.daysCovered = daysCovered
offers = items
notifyDataSetChanged()
}
2023-04-18 16:41:01 +02:00
fun refreshView(prefsRegex: Regex) {
this.prefsRegex = prefsRegex
notifyDataSetChanged()
}
2023-04-18 16:41:01 +02:00
// private fun constructRegex(pref: String): String =
// pref.replace('f', '.')
2023-04-16 21:41:46 +02:00
}