|
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) |
|
} |
|
} |
Boa noite. Será que vc poderia me ajudar. Eu não consigo capturar o clique correto do meu recycler. Ele captura todo o recycler, e não o item específico.
segue o codigo. Obrigado
class AdapterAvisos(val listaDeAvisos: ArrayList, val onClickListener: OnClickListener) : RecyclerView.Adapter<AdapterAvisos.MH>(){
@SuppressLint("SuspiciousIndentation")
override fun onBindViewHolder(holder: MH, position: Int) {
val aviso = listaDeAvisos[position]
holder.tituloAviso.setText(aviso.titulo)
holder.autorAviso.setText(aviso.autor)
holder.mensagemAviso.setText(aviso.mensagem)
holder.dataAviso.setText(aviso.data)
holder.tipoAviso.setText(aviso.tipo)
//capturando o clique
//View Holder
class MH(itemView: View) : RecyclerView.ViewHolder(itemView){
val tituloAviso: TextView = itemView.findViewById(R.id.txtTituloAvisoModelo)
val autorAviso: TextView = itemView.findViewById(R.id.txtAutorAvisoModelo)
val mensagemAviso: TextView = itemView.findViewById(R.id.txtMensagemAvisoModelo)
val dataAviso: TextView = itemView.findViewById(R.id.txtDataAvisoModelo)
val tipoAviso: TextView = itemView.findViewById(R.id.txtTipo)
}
}
eu quero que exiba o titulo do aviso quando o usuario clicar sobre um item do recycler.