Как реализовать onItemClick и onLongItemClick в RecycleView для Kotlin в Android - PullRequest
0 голосов
/ 25 декабря 2018
  • Я использовал Kotlin для реализации прослушивателей кликов
  • Как правильно его использовать, в настоящее время клик не обнаруживается, я не могу обнаружить клик с помощью приведенного ниже кода.

  class AdptEvents (val items: MutableList<TestModel>, val context: Context) : RecyclerView.Adapter<ViewHolder>() {

        override fun onCreateViewHolder(parent: ViewGroup, p1: Int): ViewHolder {
            return ViewHolder(LayoutInflater.from(context).inflate(R.layout.row_event, parent, false))
        }

        override fun getItemCount(): Int {
            return items.size
        }

        override fun onBindViewHolder(holder: ViewHolder, position: Int) {
            holder?.tvAnimalType?.text = items.get(position).getName()

            holder?.rootView.setOnClickListener{
                clickEventRow(items,position)
                true
            }
            holder?.rootView.setOnLongClickListener {
                clickEventRow(items,position)
                true
            }
        }

        private fun clickEventRow( items: MutableList<TestModel>, position: Int ) {
            Toast.makeText(context,items[position].getName(),Toast.LENGTH_LONG).show()
        }

    }

    class ViewHolder (view: View) : RecyclerView.ViewHolder(view) {
        // Holds the TextView that will add each animal to
        val tvAnimalType = view.txtTitle!!
        val rootView = view.eventListRootId!!
    }

Ответы [ 3 ]

0 голосов
/ 25 декабря 2018

Если вам нужно обработать события щелчка в корневом представлении, примените его непосредственно

class ViewHolder (view: View) : RecyclerView.ViewHolder(view) {
    // Holds the TextView that will add each animal to
    val tvAnimalType = view.txtTitle!!

    view.setOnClickListener {
        Toast.makeText(view.context, "OnClick", Toast.LENGTH_LONG).show()
    }
    view.setOnLongClickListener {
        Toast.makeText(view.context, "OnLongClick", Toast.LENGTH_LONG).show()
        true
    }
}
0 голосов
/ 25 декабря 2018

Вам больше ничего не нужно

  override fun onBindViewHolder(holder: ViewHolder, position: Int) {
            holder?.tvAnimalType?.text = items.get(position).getName()

            holder?.rootView.setOnClickListener{
              // code here
            }
            holder?.rootView.setOnLongClickListener {
               //code here
            }
        }
0 голосов
/ 25 декабря 2018

Измените свой видовой держатель.Также, если вам нужно получить индекс, используйте переменную adapterPosition.

inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
    // Holds the TextView that will add each animal to
    val tvAnimalType = itemView.txtTitle!!
    val rootView = itemView.eventListRootId!!

    init {
        itemView.setOnClickListener {
            Toast.makeText(context, "OnClick", Toast.LENGTH_LONG).show()
        }
        // OnLongClick and etc.
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...