答案 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
}