将onClick添加到RecyclerView项的一部分

时间:2019-05-22 18:05:37

标签: java android android-recyclerview

我一直在开发在线商店类型的应用程序,但遇到了一个麻烦:我被派去添加收藏夹系统,但我不知道如何启用按下按钮的功能将RecyclerView项添加到收藏夹。 (在这种情况下,单击时应该变成完整的心脏) Image of the RecyclerView

3 个答案:

答案 0 :(得分:1)

为列表中的收藏夹添加一个布尔值。最初,将其保留为假。 您需要有两个可绘制对象,一个用于选定状态,另一个用于未选定状态。

在您的onBindViewHolder中,根据上述条件在运行时设置drawable。

 if(list.isfav)
 { 
   holder.ivHeart.setImageDrawable(ContextCompat.getDrawable(context,(R.drawable.selected));
  }else{
   holder.ivHeart.setImageDrawable(ContextCompat.getDrawable(context,(R.drawable.unselected));
  }

点击此ivHeart,例如:

holder.ivHeart.setOnClickListener(v -> {
                if(list.isfav) {
                 list[adapterPosition].isfav = false;
                }else{
               list[adapterPosition].isfav = true;
                }
               notifyItemChanged(adapterPosition);
           });

在更改项目时不要忘记通知该项目。

答案 1 :(得分:0)

在RecyclerView适配器的 onBindViewHolder()方法中,将Click侦听器添加到视图中,并以编程方式更改可绘制对象。

代码将是这样

@Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        super.onBindViewHolder(holder, position);

        holder.your_like_imageview.setOnClickListener{
        holder.your_like_imageview.setImageDrawable(ContextCompat.getDrawable(context,R.drawable.something_else));
       };



    }

答案 2 :(得分:0)

我假设您对心脏使用ImageView。您可以做的是在该ImageView上设置一个点击侦听器并处理该点击。

一种理想的方法是使用接口来处理传递给适配器的点击事件。

但是,您可以在 onBindViewHolder 方法中执行以下操作:

imageView.setOnClickListener { // depending your logic change the tint for the icon or the drawable onClick(data[position], addToWishlist) notifyDataSetChanged() }

onClick 方法将收到特定项目和一个标记,用于从中添加或删除该项目 愿望清单:

fun onClick(data: Data, addToWishlist: Boolean) { // you can perform the addition/ deletion from the wishlist here }