Я использую RecyclerView, как добавить Intent к нему? - PullRequest
0 голосов
/ 09 февраля 2019

Я использую 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 ]

0 голосов
/ 09 февраля 2019

Попробуйте следующим образом. При нажатии на itemView ...

itemView.setOnClickListener(new View.OnClickListener() { 
  @Override 
  public void onClick(View v) {
    //enter code here
  } 
});
0 голосов
/ 09 февраля 2019

В Адаптере:

class ItemHolder(itemView: View): RecyclerView.ViewHolder(itemView){
...
   init {
            itemView.setOnClickListener{
                onItemClick?.invoke(list[adapterPosition])
            }
        }
...

В Деятельности или Фрагменте, где вы устанавливаете Адаптер:

adapter.onItemClick = { item -> 
     //do something
)) 
0 голосов
/ 09 февраля 2019

Если вы хотите установить 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)......

}
...