【发布时间】:2013-11-11 03:37:04
【问题描述】:
我正在开发一个包含喜欢的功能的应用程序。当用户单击图像按钮时,它应该更改其背景资源并根据其当前背景资源执行某些操作。问题是我需要按钮可以连续点击,这样如果用户不小心将一个项目添加到收藏夹中,他/她就可以从收藏夹中删除它。
这是进行更改的 onClickListener,但它只在我的活动中执行一次。一旦用户改变了收藏状态,他/她不能再次改变它,除非他/她离开活动并重新开始。
ImageButton fav = (ImageButton) findViewById(R.id.fav);
fav.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if (item.getIsFav() == 1) {
fav.setImageResource(R.drawable.fav_dimed);
editFavorite("remove from favorites");
} else if (item.getIsFav() == 0) {
fav.setImageResource(R.drawable.fav);
editFavorite("add to favorites");
}
}
});
请大家帮忙:)
【问题讨论】:
-
可能
item中的变量isFav没有更新(总是1或0),因此对后续点击没有影响。请问editFavorite()的代码也可以发一下吗? -
我确信当用户点击按钮时,isFav的值会根据它的当前值改变(如果1变成0,如果0变成1)。问题不在这里,问题是按钮本身一旦用户点击一次就变得不可点击。
-
使用 Toggle 并检查 Toggle 的状态如果它是 On 然后添加 Fav Else Remove
-
既然原因还不清楚,我有几个问题:
isFav怎么存储?我假设您正在使用 SQLite?如果是,您是否将值直接更新到数据库,而不是当前的item?如果editFavorite()与更新isFav有关,您可以在这里发布相关代码吗?最后,尝试在onClick()中添加Log.i("OnClick", "Clicked");,就在if-else块的上方。查看监听器是否总是响应您的点击。 -
感谢大家的cmets。 @KaranMavadhiya:问题不在于使用的小部件的类型,它们都是一样的。
标签: android imageview imagebutton