【问题标题】:getDrawable() in Adapter Android Studio适配器 Android Studio 中的 getDrawable()
【发布时间】: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


【解决方案1】:

我不知道为什么会这样。

但我的建议不是比较可绘制对象,而是创建另一个布尔类型的变量来跟踪收藏夹的状态....

如果布尔值为真,则将其添加到收藏夹,否则不添加...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-24
    • 2019-04-26
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    • 2020-06-25
    • 1970-01-01
    相关资源
    最近更新 更多