package com.example.smart.widget.dialog
|
|
import android.content.Context
|
import android.view.Gravity
|
import android.view.LayoutInflater
|
import android.view.View
|
import android.view.ViewGroup
|
import android.widget.TextView
|
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.RecyclerView
|
import com.example.smart.R
|
import com.example.smart.bean.CommonOptionsBean
|
import com.example.smart.databinding.CommonPopListBinding
|
import razerdp.basepopup.BasePopupWindow
|
|
/**
|
* @description:通用下拉框
|
*/
|
class CommonPopupWindow(val mContext: Context) : BasePopupWindow(mContext) {
|
|
var gravity = Gravity.BOTTOM
|
|
private lateinit var binding: CommonPopListBinding
|
|
var listener: ItemClickListener? = null
|
|
init {
|
setContentView(R.layout.common_pop_list)
|
}
|
|
|
override fun onViewCreated(contentView: View) {
|
super.onViewCreated(contentView)
|
binding = CommonPopListBinding.bind(contentView)
|
}
|
|
fun bindData(list: List<CommonOptionsBean>) {
|
binding.recyclerView.layoutManager =
|
LinearLayoutManager(mContext, LinearLayoutManager.VERTICAL, false)
|
binding.recyclerView.adapter = PopupAdapter(mContext, list)
|
}
|
|
interface ItemClickListener {
|
fun onItemClick(bean: CommonOptionsBean)
|
}
|
|
inner class PopupAdapter(val mContext: Context, val list: List<CommonOptionsBean>) :
|
RecyclerView.Adapter<PopupViewHolder>() {
|
|
override fun onBindViewHolder(holder: PopupViewHolder, position: Int) {
|
holder.titleTv.text = list[position].name
|
|
holder.itemView.setOnClickListener {
|
listener?.onItemClick(list[position])
|
dismiss()
|
}
|
}
|
|
|
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PopupViewHolder {
|
|
return PopupViewHolder(
|
LayoutInflater.from(mContext).inflate(R.layout.common_pop_item, parent, false)
|
)
|
}
|
|
|
override fun getItemCount() = list.size
|
|
}
|
|
|
inner class PopupViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
|
|
val titleTv: TextView
|
|
|
init {
|
titleTv = itemView.findViewById(R.id.tv_item)
|
}
|
|
}
|
}
|