Adapter Android Studio中的getDrawable

问题描述

我试图在我的应用程序中添加添加到收藏夹按钮”,因此在我的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,则将其添加到收藏夹,否则不添加...

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...