Recyclelerview событие нажатия кнопки RadioButton на активность Kotlin с использованием интерфейсов - PullRequest
0 голосов
/ 02 апреля 2019

Загрузка данных в Recyclerview после сгенерированного элемента события Click с использованием интерфейса на Деятельность. код ниже, но Activity onItemCompanyClick не выполняется.

Как сгенерировать событие клика и получить значение из обзора переработчика, используя интерфейс.

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
        }
    }



}

1 Ответ

0 голосов
/ 02 апреля 2019

Ваш интерфейс никогда не вызывается, вам следует звонить, если пользователь нажимает на вашу кнопку.

Попробуйте что-то вроде:

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))
            }
        }
    }

Также прочитайте это руководство по интерфейсу , надеюсь, это поможет.

...