回收器视图单选按钮单击活动 Kotlin 使用接口的事件



使用接口在生成单击事件项后在回收器视图中加载数据活动。代码在下面,但项目上的活动公司单击未执行。

如何使用 interfce 生成点击事件并从回收器视图中获取值。

MainActivity.kt

class Company : AppCompatActivity(),CompanyAdapter.Listner{
override fun onItemCompanyClick(company: Company) {
        Toast.makeText(this, "You clicked: ${company.Cmp_Name}", Toast.LENGTH_LONG).show()
    }
}

CompanyAdapter.kt

class CompanyAdapter(private val listner :Listner, internal var companyList: List<Company>)
    :RecyclerView.Adapter<CompanyAdapter.CompanyViewHolder>()
{
    interface Listner {
        fun onItemCompanyClick(company: Company)
    }
    override fun onCreateViewHolder(p0: ViewGroup, p1: Int): CompanyViewHolder {

        val itemView = LayoutInflater.from(p0.context).inflate(R.layout.list_view_item,p0,false)
        return CompanyViewHolder(itemView)
    }
    override fun getItemCount(): Int {
        return companyList.size
    }
    override fun onBindViewHolder(p0: CompanyViewHolder, p1: Int) {

       // p0.rbButton.text = this!!.companyList?.get(p1)?.Cmp_Name
        p0.bindModel(companyList[p1])
    }
    inner class CompanyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView){
        val radioButton : RadioButton = itemView.findViewById(R.id.rbCompanyName)
        fun bindModel(company: Company){
            radioButton.text = company.Cmp_Name
        }
    }

}

你的界面永远不会被调用,你应该在用户点击你的按钮时调用。

尝试类似操作:

MainActivity.kt

     class Company : AppCompatActivity(),CompanyAdapter.Listner{
       override fun onItemCompanyClick(company: Company){
Toast.makeText(this, "You clicked: ${company.Cmp_Name}", Toast.LENGTH_LONG).show()
    }
 }

CompanyAdapter.kt

  class CompanyAdapter(private val listner :Listner, internal var companyList: List<Company>)
        :RecyclerView.Adapter<CompanyAdapter.CompanyViewHolder>()
    {
 interface Listner{
      fun onItemCompanyClick(company: Company)
    }
        override fun onCreateViewHolder(p0: ViewGroup, p1: Int): CompanyViewHolder {

            val itemView = LayoutInflater.from(p0.context).inflate(R.layout.list_view_item,p0,false)
            return CompanyViewHolder(itemView)
        }
        override fun getItemCount(): Int {
            return companyList.size
        }
        override fun onBindViewHolder(p0: CompanyViewHolder, p1: Int) {

           // p0.rbButton.text = this!!.companyList?.get(p1)?.Cmp_Name
            p0.bindModel(companyList[p1])
        }
        inner class CompanyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView){
            val radioButton : RadioButton = itemView.findViewById(R.id.rbCompanyName)
            fun bindModel(company: Company){
                radioButton.text = company.Cmp_Name
                radioButton.setOnClickListener(_ -> listner.onItemCompanyClick(company))
            }
        }
    }

另请阅读有关界面的指南,希望对您有所帮助。

最新更新