class
RequiredDialog (context: Context): Dialog(context), View.OnClickListener {
private
val TAG =
"RequiredDialog"
lateinit var optionListener: OptionListener
lateinit var binding: RequiredDialogBinding
var option_value = ArrayList<String>()
var requiredItemAdapter = RequiredItemAdapter(option_value, context)
lateinit var optionDTO: OptionDTO
fun setOnOptionListener(optionListener: OptionListener) {
this
.optionListener = optionListener
}
override fun onCreate(savedInstanceState: Bundle?) {
super
.onCreate(savedInstanceState)
binding = RequiredDialogBinding.inflate(layoutInflater)
val view = binding.root
window!!.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
window!!.requestFeature(Window.FEATURE_NO_TITLE)
window!!.setGravity(Gravity.BOTTOM)
setContentView(view)
binding.btnSubAdd.setOnClickListener(
this
@RequiredDialog
)
binding.btnCancel.setOnClickListener(
this
@RequiredDialog
)
binding.btnOk.setOnClickListener(
this
@RequiredDialog
)
binding.subRequiredRecycler.adapter = requiredItemAdapter
requiredItemAdapter.itemDel(object : OnItemClickListener {
override fun onOptionDel(position: Int) {
Log.d(TAG,
"지운 위치 => $position"
)
Log.d(TAG,
"지운 값 => ${option_value[position]}"
)
option_value.removeAt(position)
requiredItemAdapter.notifyItemRemoved(position)
}
})
}
override fun onClick(v: View?) {
when(v?.id) {
binding.btnSubAdd.id -> {
option_value.add(
""
)
requiredItemAdapter.notifyDataSetChanged()
}
binding.btnCancel.id -> dismiss()
binding.btnOk.id -> result()
}
}
private
fun result() {
val name = binding.etRequiredName.text.toString()
if
(name.isEmpty()) {
Toast.makeText(context,
"Please enter an option name."
, Toast.LENGTH_SHORT).show()
}
else
{
optionDTO = OptionDTO(name, option_value,
null
,
null
,
1
)
optionListener.addOption(optionDTO)
dismiss()
}
}
}
class
RequiredItemAdapter(var datas: ArrayList<String>, val context: Context): RecyclerView.Adapter<RequiredItemAdapter.ViewHolder>() {
private
val TAG =
"RequiredItemAdapter"
lateinit var itemDel: OnItemClickListener
fun itemDel(itemClickListener: OnItemClickListener) {
itemDel = itemClickListener
}
override fun getItemCount(): Int {
return
datas.size
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val binding = RequiredRecyclerItemBinding.inflate(LayoutInflater.from(parent.context), parent,
false
)
return
ViewHolder(binding)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(datas[position], itemDel)
}
class
ViewHolder (val binding: RequiredRecyclerItemBinding) : RecyclerView.ViewHolder(binding.root) {
fun bind(data: String, itemClickListener: OnItemClickListener) {
binding.etSelectName.setText(data)
binding.btnDel.setOnClickListener {
itemClickListener.onOptionDel(adapterPosition)
}
}
}
fun addItem(data: String) {
datas.add(data)
notifyDataSetChanged()
}
fun removeItem(position: Int) {
datas.removeAt(position)
notifyItemRemoved(position)
}
}