Я использую RecyclerView, как добавить Intent к нему?
Я использую RecyclerView, и я хочу добавить слушатель щелчка к нему. Как мне этого добиться? Вот мой класс Адаптер для справки.
class ItemAdapter(var context:Context, var list:ArrayList<Items>): RecyclerView.Adapter<RecyclerView.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
var v:View=LayoutInflater.from(context).inflate(R.layout.item_row,parent,false)
return ItemHolder(v)
}
override fun getItemCount(): Int {
return list.size
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
(holder as ItemHolder).bind(list[position].name,list[position].price,list[position].picture,list[position].id)
}
class ItemHolder(itemView: View): RecyclerView.ViewHolder(itemView){
fun bind(n:String,p:Double,u:String,item_id:Int)
{
itemView.item_name.text=n
itemView.item_price.text=p.toString()+" "+"USD"
var web:String=("http://192.168.0.101/web%20Sales/images/"+u)
web=web.replace(" ","%20")
//Picasso.with(itemView.context).load(web).into(itemView.item_photo)
Glide.with(itemView.context).load(web).into(itemView.item_photo).toString()
itemView.item_add_photo.setOnClickListener{
UserInfo.itemId=item_id
var obj= QtyFragment()
var manager=(itemView.context as Activity).fragmentManager
obj.show(manager, "Qty")
}
itemView.det_btn.onItem
}
}
}
3 ответа
Попробуйте следующим образом. Нажав на itemView...
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//enter code here
}
});
Если вы хотите установить Click Listener на элемент в RecyclerView
Вы можете сделать это из вашего ItemHolder
учебный класс -
class ItemHolder(itemView: View): RecyclerView.ViewHolder(itemView){
var currentItem: Items? = null
var currentPosition: Int = 0
init{
itemView.item_add_photo.setOnClickListener {
currentItem?.let {
val message: String = "My item is: " + currentItem!!.name
val intent = Intent(context, YourActivity::class.java)
context.startActivity(intent)
}
}
}
fun bind(n:String,p:Double,u:String,item_id:Int)......
}
В адаптере:
class ItemHolder(itemView: View): RecyclerView.ViewHolder(itemView){
...
init {
itemView.setOnClickListener{
onItemClick?.invoke(list[adapterPosition])
}
}
...
В Деятельности или Фрагменте, где вы устанавливаете Адаптер:
adapter.onItemClick = { item ->
//do something
))