1

I want to define a recyclerView with kotlin for first time. But I have a problem in viewHodler's constructor.

I don't know how to define ViewHolder's Constructor. Do I have to define a secondary constructor?

My code is:

class MyAdapter: RecyclerView.Adapter<ViewHolder> {
    var array = ArrayList<Note>()
    // onCreateView 
    // getItemCount
    //onBindViewHolder
}

class ViewHolder: RecyclerView.ViewHolder{}// my view has a textView that i want to initialise but i don't know where do it
Kos
  • 4,890
  • 9
  • 38
  • 42

2 Answers2

0

Example by google: custom adapter

Example in stackoverflow: simple recyclerView

Here is a simple usage with textView (from the official android developers website):

class MyViewHolder(val textView: TextView) : RecyclerView.ViewHolder(textView)


// Create new views (invoked by the layout manager)
override fun onCreateViewHolder(parent: ViewGroup,
                                viewType: Int): MyAdapter.MyViewHolder {
    // create a new view
    val textView = LayoutInflater.from(parent.context)
            .inflate(R.layout.my_text_view, parent, false) as TextView
    // set the view's size, margins, paddings and layout parameters
    ...
    return MyViewHolder(textView)
}

// Replace the contents of a view (invoked by the layout manager)
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
    // - get element from your dataset at this position
    // - replace the contents of the view with that element
    holder.textView.text = myDataset[position]
}

I highly suggest you to go through recyclerView-android-devs and understanding-recyclerview-medium.

San Mo
  • 288
  • 2
  • 11
0

Here's an example NotesViewHolder in Kotlin:

class NotesViewHolder(view: View) : RecyclerView.ViewHolder(view) {
    fun bind(note: Note) {
        // Bind your note stuff here
    }
}

class MyAdapter : RecyclerView.Adapter<NotesViewHolder>() {
    var array = ArrayList<Note>()

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): NotesViewHolder {
        // TODO: Create you ViewHolder
    }

    override fun getItemCount(): Int {
        // TODO: Set item count here
    }

    override fun onBindViewHolder(holder: NotesViewHolder, position: Int) {
        holder.bind(array[position])
    }
}
Frans Hanyane
  • 237
  • 2
  • 12