问题描述
我试图在我的应用程序中添加“添加到收藏夹按钮”,因此在我的RecipeAdapter中创建了一个界面。我正在尝试比较两个可绘制的图像,但是有不同的代码(我不知道该如何命名?)。
public class RecipeViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
OnFavouriteButtonClickListener onFavouriteButtonClickListener;
public TextView recipeName,description,link,ingredients;
public ImageView imageView,addToFavouriteImageView;
OnItemClickedListener onItemClickedListener;
public RecipeViewHolder(@NonNull View itemView,OnItemClickedListener onItemClickedListener,final OnFavouriteButtonClickListener onFavouriteButtonClickListener) {
super(itemView);
recipeName = itemView.findViewById(R.id.textViewRecipeNameBreakfast);
imageView = itemView.findViewById(R.id.imageViewRecipeImageBreakfast);
addToFavouriteImageView = itemView.findViewById(R.id.imageViewAddToFavourite);
this.onItemClickedListener = onItemClickedListener;
this.onFavouriteButtonClickListener = onFavouriteButtonClickListener;
addToFavouriteImageView.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (onFavouriteButtonClickListener != null) {
int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION) {
Drawable d = addToFavouriteImageView.getDrawable();
Drawable b = context.getResources().getDrawable(R.drawable.ic_favorite_add);
if (addToFavouriteImageView.getDrawable() == context.getResources().getDrawable(R.drawable.ic_favorite_add)) {
addToFavouriteImageView.setimageDrawable(ContextCompat.getDrawable(context,R.drawable.ic_favorite));
Toast.makeText(context,"clicked",Toast.LENGTH_SHORT).show();
} else {
addToFavouriteImageView.setimageDrawable(ContextCompat.getDrawable(context,R.drawable.ic_favorite_add));
}
onFavouriteButtonClickListener.addToFavourite(position);
}
}
}
});
itemView.setonClickListener(this);
}
@Override
public void onClick(View view) {
onItemClickedListener.itemClicked(getAdapterPosition());
}
// public void OnClick()
}
当我尝试将Drawable d(当前可绘制对象)与可绘制对象b进行比较时,它们并不相同。有人可以知道为什么他们与众不同吗?
解决方法
我不知道为什么会这样。
但是我的建议是不要比较可绘制对象,而是创建另一个布尔类型的变量来跟踪收藏夹的状态...。
如果布尔值为true,则将其添加到收藏夹,否则不添加...