【发布时间】:2020-09-09 10:03:55
【问题描述】:
我正在尝试在我的应用程序中添加“添加到收藏夹按钮”,因此在我的 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(当前 drawable)与 drawable b 进行比较时,它们并不相同。有人可以知道为什么它们不同吗?
【问题讨论】:
-
不要比较
Drawable。只需在您的数据集对象isFavorite中有一个布尔值,并使用它在onBindViewHolder中设置收藏状态。
标签: android interface android-adapter