How to create onclick event in adapter using interface android?

前端 未结 3 1432
一生所求
一生所求 2021-01-03 08:05

How can I create on click event using interface?

In my application I\'ve created view click interface to detect clicking on adapter items into parent activity. After

3条回答
  •  时光取名叫无心
    2021-01-03 08:28

    Please check this code, It's working fine for me.

    First Create Adapter class.

    class ChapterAdapter(private val activity: Activity, val mWords: ArrayList, val btnlistener: BtnClickListener) : RecyclerView.Adapter() {
    
            companion object {
                var mClickListener: BtnClickListener? = null
            }
    
            override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
                val layoutInflater = LayoutInflater.from(parent.context)
                return ViewHolder(layoutInflater.inflate(R.layout.layout_capter_raw, parent, false))
            }
    
            override fun onBindViewHolder(holder: ViewHolder?, position: Int) {
                mClickListener = btnlistener
                val item = mWords[position]
    
                holder.layout_chapter_name.setOnClickListener(object : View.OnClickListener {
                    override fun onClick(v: View?) {
                        if (mClickListener != null)
                            mClickListener?.onBtnClick(position)
                    }
                })
            }
    
            override fun getItemCount(): Int {
                return mWords.size
            }
    
            override fun getItemId(position: Int): Long {
                return super.getItemId(position)
            }
    
            override fun getItemViewType(position: Int): Int {
                return super.getItemViewType(position)
            }
    
            class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
                val txt_capter_name = view.txt_capter_name
            }
    
            open interface BtnClickListener {
                fun onBtnClick(position: Int)
            }
        }
    

    After create and declare adapter in your Activity or Fragment.

    listAdapter = ChapterAdapter(activity, _arrChapterList, object : ChapterAdapter.BtnClickListener {
                    override fun onBtnClick(position: Int, chapter_id: String, chapter_size: String, chapter_name: String) {
                        toast(chapter_id + " = " + chapter_size, Toast.LENGTH_LONG)
                    }
                })
    

提交回复
热议问题