Android 如何动态更改ImageView的onClick操作?

Android 如何动态更改ImageView的onClick操作?,android,onclick,imageview,Android,Onclick,Imageview,我有一个ImageView,它执行一个名为setAsFavorite()的操作。此操作将产品设置为收藏夹,因此我更改ImageView的图像。但是当产品是favorite时,我想更改onclick事件,因此当用户按下imageView时,调用的操作应该是unsetAsFavorite(),而不是setAsFavorite。 如何动态更改onclick事件?获取对ImageView的引用: getView().findViewById(R.id.your_img_view_id) 然后像这样给它

我有一个ImageView,它执行一个名为setAsFavorite()的操作。此操作将产品设置为收藏夹,因此我更改ImageView的图像。但是当产品是favorite时,我想更改onclick事件,因此当用户按下imageView时,调用的操作应该是unsetAsFavorite(),而不是setAsFavorite。
如何动态更改onclick事件?

获取对ImageView的引用:

getView().findViewById(R.id.your_img_view_id)
然后像这样给它分配一个新的侦听器:

yourImageView.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    // your code here
                }
            });

通过这种方式,可以用新的侦听器更改旧的侦听器。

获取对ImageView的引用:

getView().findViewById(R.id.your_img_view_id)
然后像这样给它分配一个新的侦听器:

yourImageView.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    // your code here
                }
            });

这样你就可以用新的听众来改变旧的听众。

李艾夫给出的答案就足够了。但有一个更好的选择。 如果,则使用

 boolean isFavourite = false;

    public void switchFavorite(){//Replace function setAsFavorite() with this
          if(isFavourite)
              isFavourite = false;
          else
              isFavourite = true;
    }

这样可以减少作业所需的功能数量。

李艾夫给出的答案就足够了。但有一个更好的选择。 如果
,则使用

 boolean isFavourite = false;

    public void switchFavorite(){//Replace function setAsFavorite() with this
          if(isFavourite)
              isFavourite = false;
          else
              isFavourite = true;
    }

这样可以减少作业所需的功能数量。

您可以使用一个标志来知道它是否被设置为收藏夹,然后执行该操作

yourImageView.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
               if(isSetAsFavorite){
                   unsetAsFavorite();
                 } else {setAsFavorite();}
            }
        });

其中IsSetsFavorite是布尔类型。

您可以使用一个标志来知道它是否被设置为收藏夹,然后执行该操作

yourImageView.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
               if(isSetAsFavorite){
                   unsetAsFavorite();
                 } else {setAsFavorite();}
            }
        });

其中IsSetsFavorite是布尔类型。

我认为在您的
onclick
方法
setAsFavorite()
&
unsetAsFavorite()


我认为在您的
onclick
方法
setAsFavorite()
&
unsetAsFavorite()


在imageview的单击事件中处理布尔值。在此基础上,您可以更改imageview的图像。在imageview的单击事件中处理布尔值。基于此,您可以更改imageview的图像。