package com.fuban.user.dialog
|
|
import android.app.Activity
|
import android.content.Intent
|
import android.os.Bundle
|
import android.view.Gravity
|
import android.view.LayoutInflater
|
import android.view.View
|
import android.view.ViewGroup
|
import androidx.fragment.app.DialogFragment
|
import androidx.recyclerview.widget.LinearLayoutManager
|
import cn.sinata.xldutils.activity.BaseActivity
|
import cn.sinata.xldutils.utils.myToast
|
import com.fuban.user.R
|
import com.fuban.user.network.HttpManager
|
import com.fuban.user.network.entity.Passenger
|
import com.fuban.user.network.request
|
import com.fuban.user.ui.mine.AddPassengerActivity
|
import com.fuban.user.ui.mine.adapter.PassengerAdapter
|
import kotlinx.android.synthetic.main.dialog_passenger.*
|
import org.jetbrains.anko.matchParent
|
import org.jetbrains.anko.support.v4.startActivityForResult
|
import org.jetbrains.anko.wrapContent
|
|
class PassengerDialog : DialogFragment() {
|
private val list = arrayListOf<Passenger>() //数据源
|
private val max by lazy { //最大座位数
|
arguments?.getInt("max",6)?:6
|
}
|
private var ids = ""//已选回显
|
|
private val adapter = PassengerAdapter(list,checkable = true)
|
|
override fun onCreateView(
|
inflater: LayoutInflater,
|
container: ViewGroup?,
|
savedInstanceState: Bundle?
|
): View? {
|
return inflater.inflate(R.layout.dialog_passenger, container, false)
|
}
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
super.onCreate(savedInstanceState)
|
setStyle(STYLE_NO_FRAME, R.style.Dialog)
|
}
|
|
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
super.onActivityCreated(savedInstanceState)
|
dialog?.window?.setLayout(matchParent, wrapContent)
|
dialog?.window?.setGravity(Gravity.BOTTOM)
|
dialog?.setCanceledOnTouchOutside(true)
|
}
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
super.onViewCreated(view, savedInstanceState)
|
ids = arguments?.getString("ids")?:""
|
lv_list.layoutManager = LinearLayoutManager(requireContext())
|
lv_list.adapter = adapter
|
adapter.setOnItemClickListener { view, position ->
|
list[position].checked = !list[position].checked
|
adapter.notifyItemChanged(position)
|
ids = list.filter { it.checked }.joinToString (","){ it.id.toString() }
|
}
|
tv_add.setOnClickListener {
|
startActivityForResult<AddPassengerActivity>(10086)
|
}
|
tv_action.setOnClickListener {
|
val filter = list.filter { it.checked }
|
if (filter.isEmpty()){
|
myToast("请选择乘车人")
|
return@setOnClickListener
|
}
|
if (filter.size>max){
|
myToast("最多选择${max}人")
|
return@setOnClickListener
|
}
|
callback?.onOk(filter.size,filter.joinToString(",") { it.id.toString() })
|
dismiss()
|
}
|
getData()
|
}
|
|
private fun getData(){
|
HttpManager.queryFrequentPassengersList().request(requireActivity() as BaseActivity,success = { _, data->
|
list.clear()
|
list.addAll(data?: emptyList())
|
if (ids.isNotEmpty()){
|
val split = ids.split(",")
|
list.forEach {
|
it.checked = it.id.toString() in split
|
}
|
}
|
adapter.notifyDataSetChanged()
|
})
|
}
|
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
super.onActivityResult(requestCode, resultCode, data)
|
if (resultCode == Activity.RESULT_OK&&requestCode == 10086){
|
getData()
|
}
|
}
|
|
interface Callback {
|
fun onOk(num: Int,ids:String)
|
}
|
|
private var callback: Callback? = null
|
|
fun setCallback(callback: Callback) {
|
this.callback = callback
|
}
|
}
|