RecyclerView onitemClickListener в Kotlin - PullRequest
       3

RecyclerView onitemClickListener в Kotlin

0 голосов
/ 06 февраля 2020

Я новичок в kotlin. Ошибка получения списка кликов в строке holder.initilise(chapterlist.get(position),clickListener) Ошибка отображается в слове clickListener. Пожалуйста, помогите мне решить мою проблему. Я хочу нажать на один вид и перенести на другой recyclerView. Этот список показывает главы, которые я хочу go в списке тем, и каждая глава имеет свой собственный комментарий topics.holder.initilise(chapterlist.get(position),clickListener) в коде, и он просто показывает список, который я извлекаю из бэкэнда

Код:

import android.content.Context
import android.view.Display
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView

class CustomeAdapter(val ctx: Context, var clickListener: Int, var chapterlist:ArrayList<Model>) : RecyclerView.Adapter<ViewHolder>() {


    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val user : Model = chapterlist[position]
       holder?.textViewName?.text=user.name
        holder?.textViewChapter?.text=user.desc


  //   holder.initilise(chapterlist.get(position),clickListener) //(getting error on clickListener)
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val v = LayoutInflater.from(parent?.context).inflate(R.layout.row,parent,false)
        return ViewHolder(v)
    }

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

}

class ViewHolder(itemView: View) :RecyclerView.ViewHolder(itemView){

    val textViewName = itemView.findViewById(R.id.textView) as TextView
    val textViewChapter = itemView.findViewById(R.id.textView2) as TextView

    fun initilise(list: Model, action:OnChapterClick){
        textViewName.text=list.name
        textViewChapter.text=list.desc

        itemView.setOnClickListener{
            action.onItemClick(list,adapterPosition)
        }

    }
}

interface OnChapterClick {
    fun onItemClick(list: Model,position: Int )

}

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Выполните следующие шаги:

Шаг - 1: Вам необходимо орудия OnChapterClick в вашем MainActivity2

class MainActivity2: AppCompatActivity, OnChapterClick {
    ....

    override fun onItemClick(list: Model, position: Int ) {

        //Implement your logic here
    } 
}

Шаг - 2: Измените конструктор CustomeAdapter так, чтобы он принимал OnChapterClick вместо int

class CustomeAdapter(val ctx: Context, var clickListener: OnChapterClick, var chapterlist:ArrayList<Model>) : RecyclerView.Adapter<ViewHolder>() {

    ....
}

Шаг - 3: Инициализация адаптера с this вместо R.layout.row как показано ниже:

val adapter = CustomeAdapter(applicationContext, this@MainActivity2, chapterlist)
0 голосов
/ 06 февраля 2020

Ваш clickListener определен как Int:

var clickListener: Int

Это, вероятно, неправильно, поскольку целые числа не могут прослушивать щелчки. Вероятно, должно быть:

var clickListener: OnChapterClick 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...