我有一个ImageView,它执行一个名为setAsFavorite()的动作。此操作将产品设置为收藏夹,因此我更改了ImageView的图像。但是当产品最受欢迎时,我想更改onclick事件,因此当用户按下imageView时,调用的操作应该是unsetAsFavorite()而不是setAsFavorite。 如何动态更改onclick事件?
答案 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
}
});
这样您可以使用新的侦听器更改旧侦听器。