美文网首页
底部弹窗代码模板~BottomSheetDialogFragme

底部弹窗代码模板~BottomSheetDialogFragme

作者: crossroads | 来源:发表于2020-04-17 15:14 被阅读0次

懒得每次写重复代码,打个模板好了,大家有更好的设计想法,欢迎告知~

import android.os.Bundle
import android.support.design.widget.BottomSheetDialogFragment
import android.support.v4.app.FragmentManager
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup

class BottomXXFragment : BottomSheetDialogFragment(),
    XXListAdapter.ItemClickListener {

    private var listener: ItemClickListener? = null

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        return inflater.inflate(R.layout.frag_bottom_XX, container, false)
    }

// 或者将listener放入newInstance里,给fragment对象赋值。
    fun show(manager: FragmentManager?, listener: ItemClickListener) {
        this.listener = listener
        super.show(manager, javaClass.simpleName)
    }

    override fun onActivityCreated(savedInstanceState: Bundle?) {
        super.onActivityCreated(savedInstanceState)
        val list = arguments?.getSerializable(DATA_xx) as? List<xx>
        recyclerView.layoutManager = LinearLayoutManager(context)
        recyclerView.itemAnimator = DefaultItemAnimator()
        recyclerView.adapter = list?.let { xxListAdapter(it, this) }
    }

    override fun itemClick(item: xx) {
        listener?.onItemClick(item)
        dismiss()
    }

    companion object {
        private const val DATA_THIRD = "third_list"
        fun newInstance(list: List<XX>): BottomXXFragment {
            return BottomXXFragment().apply {
                arguments = Bundle().apply {
                    putSerializable(DATA_XX, list as? ArrayList)
                }
            }
        }
    }

    interface ItemClickListener {
        fun onItemClick(item: xx)
    }
}
class XXListAdapter(
    private val list: List<xx>,
    private val listener: ItemClickListener
) : RecyclerView.Adapter<ThirdListAdapter.ViewHolder>() {

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val view = LayoutInflater.from(parent.context).inflate(
            R.layout.account_third_item,
            parent,
            false
        )
        return ViewHolder(view)
    }

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        if (position == RecyclerView.NO_POSITION) return
        val item = list[position]
        holder.xxName.text = item.name
        holder.itemView.setOnClickListener {
            listener.itemClick(item)
        }
    }

    override fun getItemCount() = list.size

    inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        val accountName: TextView = itemView.findViewById(R.id.xx_name)
    }

    interface ItemClickListener {
        fun itemClick(item: xx)
    }
}
    BottomXXSelect.newInstance().show(supportFragmentManager,
                    object : BottomXXSelect.ItemClickListener {
                        override fun onItemClick(xx: XX) {
                            
                        }
                    })

相关文章

  • 底部弹窗代码模板~BottomSheetDialogFragme

    懒得每次写重复代码,打个模板好了,大家有更好的设计想法,欢迎告知~

  • PopView

    底部弹窗 中间弹窗

  • Python day42_Flask入门

    模板代码复用 在模板中,可能会遇到以下情况: 多个模板具有完全相同的顶部和底部内容 多个模板中具有相同的模板代码内...

  • flutter 自定义弹窗

    仿苹果底部弹窗模态框 自定义弹窗 使用

  • 底部弹窗

    在项目中经常会用到底部弹出框或者其他地方的弹出框,今天用到了 Dialog 来实现(以前都是用 pw 实现的),在...

  • 移动端禁止弹出层背景滚动

    场景:背景内容超出屏幕高度,需滚动展示;底部弹窗内容超出底部容器高度,需在容器内滚动展示;当底部弹窗打开,需阻止背...

  • UIAlertView 警示框 以及 UIActionSheet

    UIAlertView 警示框 UIActionSheet 底部弹窗

  • Flask——模板继承

    在模板中,可能会遇到以下情况: 多个模板具有完全相同的顶部和底部内容 多个模板中具有相同的模板代码内容,但是内容中...

  • 安卓Util

    SharedPreferenceUtil BottomDialogUtil底部弹窗 软键盘切换

  • iOS开发-底部弹窗视图

    开发过程中底部弹窗视图在很多处会被用到,所以今天写一个简易的底部弹窗视图 1.先分析都有哪些控件底部蒙层 mask...

网友评论

      本文标题:底部弹窗代码模板~BottomSheetDialogFragme

      本文链接:https://www.haomeiwen.com/subject/kzrlyctx.html