我使用的是RecyclerView,如何意向补充呢?

问题描述 投票:2回答:3

我使用的是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

        }
    }

}
android android-listview listview-adapter
3个回答
0
投票

如果你想设置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)......

}

0
投票

在适配器:

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

在活动或片段,你安装适配器:

adapter.onItemClick = { item -> 
     //do something
)) 

0
投票

尝试在此ItemView控件点击way.on ...

itemView.setOnClickListener(new View.OnClickListener() { 
  @Override 
  public void onClick(View v) {
    //enter code here
  } 
});
© www.soinside.com 2019 - 2024. All rights reserved.