Revised colour picker dialog to show colour change without closing and re-opening the dialog

This commit is contained in:
Deniz Düzgören
2019-07-26 13:31:31 +02:00
parent 2b5d03093b
commit 351845c4df
7 changed files with 173 additions and 95 deletions
@@ -0,0 +1,58 @@
package com.denizd.substitutionplan
import android.preference.PreferenceManager
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import androidx.appcompat.app.AlertDialog
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView
import com.google.android.material.button.MaterialButton
import com.google.android.material.card.MaterialCardView
class ColourAdapter(private var mColours: List<Colour>, onClickListener: OnClickListener) : RecyclerView.Adapter<ColourAdapter.ColourViewHolder>() {
val mOnClickListener = onClickListener
class ColourViewHolder(view: View, clickListener: OnClickListener) : RecyclerView.ViewHolder(view), View.OnClickListener {
val title: TextView = view.findViewById(R.id.item_text)
var image: ImageView = view.findViewById(R.id.item_image)
val titleNoLang: TextView = view.findViewById(R.id.item_text_no_lang)
val mClickListener = clickListener
init { view.setOnClickListener(this) }
override fun onClick(v: View?) { mClickListener.onClick(adapterPosition, title.text.toString(), titleNoLang.text.toString()) }
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ColourViewHolder {
val v = LayoutInflater.from(parent.context).inflate(R.layout.list_item, parent, false)
return ColourViewHolder(v, mOnClickListener)
}
override fun onBindViewHolder(holder: ColourViewHolder, position: Int) {
val currentItem = mColours[position]
val prefs = PreferenceManager.getDefaultSharedPreferences(holder.image.context)
holder.title.text = currentItem.title
holder.titleNoLang.text = currentItem.titleNoLang
holder.image.setImageDrawable(ContextCompat.getDrawable(holder.image.context, currentItem.icon))
if (currentItem.colour != 0) {
holder.image.drawable.setTint(ContextCompat.getColor(holder.image.context, currentItem.colour))
}
}
override fun getItemCount(): Int = mColours.size
fun setColours(colours: List<Colour>) {
mColours = colours
notifyDataSetChanged()
}
public interface OnClickListener {
fun onClick(position: Int, title: String, titleNolang: String)
}
}