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

时间:2014-06-13 10:02:30

标签: android onclick imageview

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

4 个答案:

答案 0 :(得分:2)

av_lee给出的答案就足够了。但是有一个更好的选择。 请改用if

 boolean isFavourite = false;

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

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

答案 1 :(得分:2)

您可以使用A标志来确定它是否已被设置为收藏,然后按照

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

其中isSetAsFavorite属于布尔类型。

答案 2 :(得分:1)

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

int myFlag =0;

onclick(){

   if(myFlag == 0)
        setAsFavorite();
   else
        unsetAsFavorite();

}


void setAsFavorite(){

   myFlag = 1;

   //do your work...

}

void unsetAsFavorite(){

   myFlag = 0;

   //do your work...

}

答案 3 :(得分:0)

获取对ImageView的引用:

getView().findViewById(R.id.your_img_view_id)

然后像这样分配一个新的监听器:

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

这样您可以使用新的侦听器更改旧侦听器。