在Android中喜欢的按钮无法正常工作



hii我正在制作一个应用程序,其中我的心脏图像很小,我设置了一个onclick listener,因此当我单击该图像时,它被另一个红色的心脏图像替换。

所以我的问题是,当我再次单击红色心形图像时,它不会转向其正常状态,这是空白的心向量图像,因为我在Android中是新的,如果有人可以指导,请不知道。

我的图像代码onclick

  @Override
    public void onBindViewHolder(FeedViewHolder holder, int position) {
    int image_id = images[position];
    //holder.background_image_layout.setImageDrawable(null);
    //holder.background_image_layout.setImageResource(image_id);
    holder.background_image.setBackgroundResource(image_id);
    }
    @Override
    public int getItemCount() {
        return images.length;
    }
    public static class FeedViewHolder extends RecyclerView.ViewHolder {
        CustomTextViewMedium first_text,second_text,third_text,fourth_text,fifth_text,sixth_text,
                seventh_text;
        ImageView favourite_image;
        CardView primary_card;
        LinearLayout background_image;
        ImageView background_image_layout;
        CircleImageView profile_image;
        public FeedViewHolder(View itemView) {
            super(itemView);
            background_image = (LinearLayout)itemView.findViewById(R.id.background_image);
            primary_card = (CardView)itemView.findViewById(R.id.primary_card);
            first_text = (CustomTextViewMedium)itemView.findViewById(R.id.first_text);
            second_text = (CustomTextViewMedium)itemView.findViewById(R.id.second_text);
            third_text = (CustomTextViewMedium)itemView.findViewById(R.id.third_text);
            fourth_text = (CustomTextViewMedium)itemView.findViewById(R.id.fourth_text);
            fifth_text = (CustomTextViewMedium)itemView.findViewById(R.id.fifth_text);
            sixth_text = (CustomTextViewMedium)itemView.findViewById(R.id.sixth_text);
            seventh_text = (CustomTextViewMedium)itemView.findViewById(R.id.seventh_text);
            favourite_image = (ImageView)itemView.findViewById(R.id.favourite_image);
            background_image_layout = (ImageView) itemView.findViewById(R.id.background_image_layout);
            profile_image = (CircleImageView)itemView.findViewById(R.id.profile_image);
            favourite_image.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if(favourite_image.isPressed()){
                        favourite_image.setImageResource(R.drawable.ic_heart);
                        favourite_image.setScaleType(ImageView.ScaleType.CENTER_CROP);
                    }
                    else {
                        favourite_image.setImageResource(R.drawable.ic_favorite_border_black_24dp);
                        favourite_image.setScaleType(ImageView.ScaleType.CENTER_CROP);
                    }
                }
            });

        }
    }

使用这样的 if条件: -

第一个全球定义这样的定义: -

boolean imageChange = true;

然后在setOnClickListener中这样做: -

  favourite_image.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if(imageChange ){
                            favourite_image.setImageResource(R.drawable.ic_heart);
                            favourite_image.setScaleType(ImageView.ScaleType.CENTER_CROP);
                            imageChange = false;                        
                           }else {
                                favourite_image.setImageResource(R.drawable.ic_favorite_border_black_24dp);
                                favourite_image.setScaleType(ImageView.ScaleType.CENTER_CROP);
                                imageChange = true;
                            }
                        }
                    });

问题是 favourite_image.isPressed()不是视图的持久状态。仅当用户将手指握在视图上时,它才会是true

要克服这一点,您有两个类似的选择:

选项#1

而不是检查isPressed,您可以检查其他状态,例如isSelected。由于这是ImageView,您可能需要在单击时手动设置状态。

public void onClick(View v) {
                    if(favourite_image.isSelected()){
                        favourite_image.setImageResource(R.drawable.ic_heart);
                        favourite_image.setScaleType(ImageView.ScaleType.CENTER_CROP);
                        favourite_image.setSelected(false)
                    }
                    else {
                        favourite_image.setImageResource(R.drawable.ic_favorite_border_black_24dp);
                        favourite_image.setScaleType(ImageView.ScaleType.CENTER_CROP);
                        favourite_image.setSelected(true)
                    }
                }

选项#2

使用一些简单的boolean跟踪所选状态,并将其值相似于上述代码。

最新更新