2019-09-01 11:54:12 +02:00
|
|
|
package com.denizd.substitutionplan.adapters
|
2019-08-27 18:38:49 +02:00
|
|
|
|
|
|
|
|
import android.view.LayoutInflater
|
|
|
|
|
import android.view.View
|
|
|
|
|
import android.view.ViewGroup
|
|
|
|
|
import android.widget.TextView
|
|
|
|
|
import androidx.core.content.ContextCompat
|
|
|
|
|
import androidx.recyclerview.widget.RecyclerView
|
2019-09-01 11:54:12 +02:00
|
|
|
import com.denizd.substitutionplan.R
|
|
|
|
|
import com.denizd.substitutionplan.models.Ringtone
|
2019-08-27 18:38:49 +02:00
|
|
|
import com.google.android.material.card.MaterialCardView
|
|
|
|
|
|
2019-09-23 17:23:59 +02:00
|
|
|
/**
|
|
|
|
|
* Adapter class used for displaying all available notification ringtones to the user up to
|
|
|
|
|
* Android version 7 (Nougat). Used in SettingsFragment.kt
|
|
|
|
|
*
|
|
|
|
|
* @param ringtones a list of all ringtones including their URI
|
|
|
|
|
* @param onClickListener a reference to an OnClickListener to set the ringtone
|
|
|
|
|
*/
|
|
|
|
|
internal class RingtoneAdapter(private val ringtones: List<Ringtone>, private val onClickListener: OnClickListener) : RecyclerView.Adapter<RingtoneAdapter.RingtoneViewHolder>() {
|
2019-08-27 18:38:49 +02:00
|
|
|
|
2019-09-23 17:23:59 +02:00
|
|
|
internal class RingtoneViewHolder(view: View, private val clickListener: OnClickListener) : RecyclerView.ViewHolder(view), View.OnClickListener {
|
2019-08-27 18:38:49 +02:00
|
|
|
val name: TextView = view.findViewById(R.id.item_text)
|
|
|
|
|
val uri: TextView = view.findViewById(R.id.item_text_no_lang)
|
|
|
|
|
val cardView: MaterialCardView = view.findViewById(R.id.cardView)
|
|
|
|
|
init { view.setOnClickListener(this) }
|
|
|
|
|
|
2019-09-23 17:23:59 +02:00
|
|
|
override fun onClick(v: View?) { clickListener.onRingtoneClick(adapterPosition, name.text.toString(), uri.text.toString()) }
|
2019-08-27 18:38:49 +02:00
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RingtoneViewHolder {
|
|
|
|
|
val v = LayoutInflater.from(parent.context).inflate(R.layout.list_item, parent, false)
|
2019-09-23 17:23:59 +02:00
|
|
|
return RingtoneViewHolder(v, onClickListener)
|
2019-08-27 18:38:49 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun onBindViewHolder(holder: RingtoneViewHolder, position: Int) {
|
2019-09-23 17:23:59 +02:00
|
|
|
val currentItem = ringtones[position]
|
2019-08-27 18:38:49 +02:00
|
|
|
|
|
|
|
|
holder.name.text = currentItem.name
|
|
|
|
|
holder.uri.text = currentItem.uri
|
2019-09-23 17:23:59 +02:00
|
|
|
holder.cardView.setCardBackgroundColor(ContextCompat.getColor(holder.cardView.context, R.color.colorBackground))
|
2019-08-27 18:38:49 +02:00
|
|
|
}
|
|
|
|
|
|
2019-09-23 17:23:59 +02:00
|
|
|
override fun getItemCount(): Int = ringtones.size
|
2019-08-27 18:38:49 +02:00
|
|
|
|
2019-09-15 12:01:17 +02:00
|
|
|
internal interface OnClickListener {
|
2019-08-27 18:38:49 +02:00
|
|
|
fun onRingtoneClick(position: Int, name: String, uri: String)
|
|
|
|
|
}
|
|
|
|
|
}
|