Java RecyclerView-单击并使用新方法替换imageView

Java RecyclerView-单击并使用新方法替换imageView,java,android-recyclerview,onclicklistener,Java,Android Recyclerview,Onclicklistener,你好-我正在开发一个测试回收视图,并查看添加收藏夹按钮的选项。我用以下方法来处理这个问题 将imageView添加到ReyclView-完成 将onClick侦听器设置为imageView,以便图标在onClick-complete时更新 当用户第一次单击imageView时,有一个方法称为-complete 如果用户单击替换的imageView,则会调用另一个方法-不工作 我看到的结果是,当用户第一次单击imageView并更新imageView图标时,第二次单击将导致调用第一个方法。谁能帮我

你好-我正在开发一个测试回收视图,并查看添加收藏夹按钮的选项。我用以下方法来处理这个问题

  • 将imageView添加到ReyclView-完成
  • 将onClick侦听器设置为imageView,以便图标在onClick-complete时更新
  • 当用户第一次单击imageView时,有一个方法称为-complete
  • 如果用户单击替换的imageView,则会调用另一个方法-不工作
  • 我看到的结果是,当用户第一次单击imageView并更新imageView图标时,第二次单击将导致调用第一个方法。谁能帮我找出我做错了什么

    我已经在自定义适配器类中创建了onClick侦听器。最初的imageView称为“imageViewFavorite”,在我测试时,我刚刚将第二个imageView称为“imageViewBlue”,部分原因是图标的颜色变为蓝色

    public NoteHolder(@NonNull View itemView, OnItemClickListener listener)
            {
                super(itemView);
                textViewTitle = itemView.findViewById(R.id.text_view_title);
                textViewDescription = itemView.findViewById(R.id.text_view_description);
                textViewPriority = itemView.findViewById(R.id.text_view_priority);
                imageViewFavorite = itemView.findViewById(R.id.buttonFavorite);
    
                imageViewBlue = itemView.findViewById(R.id.buttonFavoriteBlue);
    
                itemView.setOnClickListener(new View.OnClickListener()
                {
                    @Override
                    public void onClick(View view)
                    {
                            int position = getAbsoluteAdapterPosition();
                            listener.onItemClick(position);
                    }
                });
    
                imageViewFavorite.setOnClickListener(new View.OnClickListener()
                {
                    @Override
                    public void onClick(View view)
                    {
                        int position = getAbsoluteAdapterPosition();
                        listener.onDeleteClick(position);
    
       
                        imageViewFavorite = itemView.findViewById(R.id.buttonFavorite);
                        imageViewFavorite.setImageResource(R.drawable.ic_add_24_blue);
    
                    }
                });
    
    
                imageViewBlue.setOnClickListener(new View.OnClickListener()
                {
                    @Override
                    public void onClick(View view)
                    {
                        int position = getAbsoluteAdapterPosition();
                        listener.onTestToast(position);
    
                        ImageView image = itemView.findViewById(R.id.buttonFavoriteBlue);
                        image.setImageResource(R.drawable.ic__add_24_black);
    
                    }
                });
    

    需要技巧的是,当创建recyclerView时,所有的imageView都应该存在,但您可以在开始时将替换的imageView设置为不可见,然后在按下第一个时,如果其方法已经存在于支架中,则使其可见。这很有帮助。谢谢你,布里斯托尔