Skip to content

Instantly share code, notes, and snippets.

@webserveis
Last active October 19, 2023 21:36
Show Gist options
  • Select an option

  • Save webserveis/d78b7ec6ba17ca025aa0570c63874319 to your computer and use it in GitHub Desktop.

Select an option

Save webserveis/d78b7ec6ba17ca025aa0570c63874319 to your computer and use it in GitHub Desktop.

Revisions

  1. webserveis renamed this gist Oct 29, 2019. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  2. webserveis created this gist Oct 29, 2019.
    18 changes: 18 additions & 0 deletions MainActivity.kt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,18 @@
    val mAdapter = MySimpleAdapter(dummyData())
    recycler_view.setHasFixedSize(true)
    recycler_view.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
    recycler_view.adapter = mAdapter

    mAdapter.setOnItemClickListener(object : MySimpleAdapter.ClickListener {
    override fun onItemClick(v: View, position: Int) {

    Log.v(TAG, "onItemClick ${position}")

    Toast.makeText(
    this@MainActivity,
    "Clicked: ${mAdapter.getItem(position)}",
    Toast.LENGTH_SHORT
    ).show()
    }

    })
    62 changes: 62 additions & 0 deletions MySimpleAdapter.kt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,62 @@
    import android.view.LayoutInflater
    import android.view.View
    import android.view.ViewGroup
    import android.widget.TextView
    import androidx.recyclerview.widget.RecyclerView

    class MySimpleAdapter(private val mDataSet: List<String>?) :
    RecyclerView.Adapter<MySimpleAdapter.MyViewHolder>() {

    private var clickListener: ClickListener? = null

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

    override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
    val data = mDataSet?.get(position)
    data?.let { holder.bindItems(it) }
    }

    override fun getItemCount(): Int {
    return mDataSet?.size ?: 0
    }

    fun getItem(position: Int): String? {
    //return if (mDataSet != null) mDataSet[position] else null
    return mDataSet?.get(position)
    }

    fun setOnItemClickListener(clickListener: ClickListener) {
    this.clickListener = clickListener
    }


    inner class MyViewHolder(v: View) : RecyclerView.ViewHolder(v), View.OnClickListener {

    private val text1 = v.findViewById(android.R.id.text1) as TextView

    init {
    if (clickListener != null) {
    itemView.setOnClickListener(this)
    }
    }

    fun bindItems(data: String) {
    text1.text = data
    }

    override fun onClick(v: View?) {
    if (v != null) {
    clickListener?.onItemClick(v,adapterPosition)
    }
    }

    }

    interface ClickListener {
    fun onItemClick(v: View,position: Int)
    }
    }
    7 changes: 7 additions & 0 deletions areadme.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,7 @@
    # RecyclerView Kotlin onClickListener
    Ejemplo de como integrar un recyclerview usando Kotlin, los elementos se mostrarán con filas simples y permite ser pulsados

    Partiendo del trozo de código anterior (Recyclerview Kotlin I)[https://gist.github.com/webserveis/b66149f204c5946a8dd9107278486c63]

    ## Añadir funcionalidad onClickListener
    Para implementar onClickListener a los elementos que se visualizan en el recyclerView