首页 > 解决方案 > 在 KOTLIN 的 Bottom Sheet 的 Recycler View Adapter 中添加数据

问题描述

我想将文本项目添加到底部工作表对话框,当我完成将项目添加到底部工作表对话框并单击显示对话框按钮时,它应该显示我添加的所有项目。在这里,我试图从编辑文本中获取文本,将其添加到底部工作表对话框的 RecyclerView 。这是代码 MainActivity.kt-

 override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val showDialogBtn = findViewById<Button>(R.id.button)
        val text = findViewById<EditText>(R.id.text_)
        val addBtn = findViewById<Button>(R.id.add_btn)

        //initialize bottom sheet layout
        val view = View.inflate(this,R.layout.btm_sheet,null)

        //Initialize BottomSheet
        val btmSheet = BottomSheetDialog(this)
        btmSheet.setContentView(view)
        btmSheet.behavior.peekHeight  = BottomSheetBehavior.PEEK_HEIGHT_AUTO
        btmSheet.behavior.state = BottomSheetBehavior.STATE_EXPANDED
        btmSheet.behavior.skipCollapsed = true

        //bottom sheet Component
        val okBtn = view.findViewById<Button>(R.id.ok)
        val rv = view.findViewById<RecyclerView>(R.id.recyclerView)

        val list = ArrayList<CartList>() //
        val adapter = RvAdapter(list) //adapter
        rv.adapter = adapter

       addBtn.setOnClickListener {
           val a = text.text.toString() //getting text from edit text
           list.add(CartList(a)) // adding text in adapter list
           adapter.notifyDataSetChanged() //refreshing adapter
           println(list)


       }

        showDialogBtn.setOnClickListener {
            btmSheet.show() //show bottomSheetDialog
        }

        okBtn.setOnClickListener {
            btmSheet.dismiss() // Dismiss Dialog
        }


    } 

适配器是 -

data class CartList(val tum:String)
class RvAdapter(val d:MutableList<CartList>):RecyclerView.Adapter<MyViewHOlder>() {
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHOlder {
        val i = LayoutInflater.from(parent.context).inflate(R.layout.item,parent,false)
        return MyViewHOlder(i)
    }

    override fun onBindViewHolder(holder: MyViewHOlder, position: Int) {
        val id = d[position]
        holder.itemView.findViewById<TextView>(R.id.hello_world).text = id.tum
    }

    override fun getItemCount(): Int = d.count()

}

class MyViewHOlder(val v: View):RecyclerView.ViewHolder(v) {

}

标签: androidkotlinandroid-recyclerviewbottom-sheet

解决方案


推荐阅读