Вы можете создать interface
для Item Click Listener
, как
interface MyItemClickListener{
fun itemClick(position: Int)
}
Теперь вы должны передать контекст constructor
вашего adapter
.
class medicationAdapter (val medicationlist: ArrayList<medications>, var context: Context) : RecyclerView.Adapter<medicationAdapter.ViewHolder>() {...}
исоздайте экземпляр MyItemClickListener
внутри вашего адаптера
// create instance of MyItemClickListener
private val clickListener = context as MyItemClickListener
и установите click listener
на вашем виде внутри onCreateViewHolder
.
измените ваш adapter
следующим образом
class medicationAdapter (val medicationlist: ArrayList<medications>, var context: Context) : RecyclerView.Adapter<medicationAdapter.ViewHolder>() {
// create instance of MyItemClickListener
private val clickListener = context as MyItemClickListener
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
var inflater = LayoutInflater.from(parent.context)
var v = inflater.inflate(R.layout.list_medication, parent, false)
var viewHolder = ViewHolder(v)
// here you set click listener on your item view.
v.setOnClickListener {
clickListener.itemClick(viewHolder.adapterPosition)
}
return viewHolder
}
override fun getItemCount(): Int {
return medicationlist.size
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val medicationgroup: medications = medicationlist[position]
holder?.medicationnamevar?.text = medicationgroup.medicineN
holder?.medicationschedulevar?.text = medicationgroup.MedicineTime
val imagemedicine = holder?.itemView?.medicationimageview
Picasso.get().load(medicationgroup.MedicineImage).into(imagemedicine)
}
class ViewHolder(itemView: View) :RecyclerView.ViewHolder(itemView) {
val medicationnamevar = itemView.findViewById(R.id.medicationname) as TextView
val medicationschedulevar = itemView.findViewById(R.id.medicationschedule) as TextView
}
}
И, наконец, в своей деятельности вы должны реализовать интерфейс MyItemClickListener
и override
itemClick()
, как это
class YourActivity: AppCompatActivity(), MyItemClickListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// ....
}
override fun itemClick(position: Int) {
Log.d("TAG","Click Item Position: "+position)
// here you can call your new activity according to your item position.
}
}